ไม่สามารถดึง / ดันภาพหลังจากอัปเดต Docker เป็น 1.12


86

รีจิสตรีส่วนตัวทำงานได้ดีบนพื้นฐานของนักเทียบท่า 1.10.3 แต่ฉันไม่สามารถดึง / ดันรูปภาพได้หลังจากที่นักเทียบท่าอัปเดตเป็น 1.12.0

ฉันได้แก้ไข / etc / sysconfig / docker เป็น:

OPTIONS='--selinux-enabled=true --insecure-registry=myip:5000'

หรือ

OPTIONS='--selinux-enabled=true --insecure-registry myip:5000'

แต่เมื่อฉันดำเนินการดึง / ดันฉันได้รับข้อผิดพลาดนี้:

$ docker pull myip:5000/cadvisor
Using default tag: latest
Error response from daemon: Get https://myip:5000/v1/_ping: http: server gave HTTP response to HTTPS client

เมื่อฉันเปลี่ยนนักเทียบท่ากลับเป็น 1.10.3 มันยังใช้งานได้ดีดังต่อไปนี้:

$ docker pull myip:5000/cadvisor
Using default tag: latest
Trying to pull repository myip:5000/cadvisor ... 
latest: Pulling from myip:5000/cadvisor
09d0220f4043: Pull complete 
a3ed95caeb02: Pull complete 
151807d34af9: Pull complete 
14cd28dce332: Pull complete     
Digest:
sha256:33b6475cd5b7646b3748097af1224de3eee3ba7cf5105524d95c0cf135f59b47
Status: Downloaded newer image for myip/cadvisor:latest

ข้อมูลที่เกี่ยวข้องบางส่วนแสดงไว้ด้านล่าง:

docker version
Client:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built:

OS/Arch: linux/amd64

Server:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built:

OS/Arch: linux/amd64

docker info
Containers: 4
Running: 1
Paused: 0
Stopped: 3
Images: 241
Server Version: 1.12.0
Storage Driver: devicemapper
Pool Name: docker-253:0-6809-pool
Pool Blocksize: 65.54 kB
Base Device Size: 107.4 GB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 5.459 GB
Data Space Total: 107.4 GB
Data Space Available: 34.74 GB
Metadata Space Used: 9.912 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.138 GB
Thin Pool Minimum Free Space: 10.74 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
WARNING: Usage of loopback devices is strongly discouraged for production use. Use '--storage-opt dm.thinpooldev' to specify a custom block storage device.
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.107-RHEL7 (2016-06-09)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: host overlay null bridge
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-229.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 24
Total Memory: 62.39 GiB
Name: server_3
ID: TITS:BL4B:M5FE:CIRO:5SW6:TVIV:HW36:J7OS:WLHF:46T6:2RBA:WCNV
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 21
Goroutines: 32
System Time: 2016-08-02T10:33:06.414048675+08:00
EventsListeners: 0
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
127.0.0.0/8

docker exec <registry-container> registry -version
registry github.com/docker/distribution v2.2.1

หลังจากที่ฉันรีสตาร์ท Docker daemon ในโหมดดีบัก daemon จะบันทึกเมื่อเกิดปัญหาของฉันขึ้นใหม่จะแสดงรายการด้านล่าง:

DEBU[0794] Calling POST /v1.24/images/create?fromImage=10.10.10.40%3A5000%2Fcadvisor&tag=latest 
DEBU[0794] hostDir: /etc/docker/certs.d/10.10.10.40:5000 
DEBU[0794] hostDir: /etc/docker/certs.d/10.10.10.40:5000 
DEBU[0794] Trying to pull 10.10.10.40:5000/cadvisor from https://10.10.10.40:5000 v2 
WARN[0794] Error getting v2 registry: Get https://10.10.10.40:5000/v2/: http: server gave HTTP response to HTTPS client 
ERRO[0794] Attempting next endpoint for pull after error: Get https://10.10.10.40:5000/v2/: http: server gave HTTP response to HTTPS client
DEBU[0794] Trying to pull 10.10.10.40:5000/cadvisor from https://10.10.10.40:5000 v1 
DEBU[0794] hostDir: /etc/docker/certs.d/10.10.10.40:5000
DEBU[0794] attempting v1 ping for registry endpoint https://10.10.10.40:5000/v1/
DEBU[0794] Fallback from error: Get https://10.10.10.40:5000/v1/_ping: http: server gave HTTP response to HTTPS client 
ERRO[0794] Attempting next endpoint for pull after error: Get https://10.10.10.40:5000/v1/_ping: http: server gave HTTP response to HTTPS client
ERRO[0794] Handler for POST /v1.24/images/create returned error: Get https://10.10.10.40:5000/v1/_ping: http: server gave HTTP response to HTTPS client 
DEBU[1201] clean 2 unused exec commands

ยิ่งไปกว่านั้นฉันแค่เรียกใช้คำสั่งง่ายๆเพื่อเปิดรีจิสทรีส่วนตัวสำหรับการทดสอบสิ่งอื่น ๆ จะเป็นค่าเริ่มต้น:

docker run -d -p 5000:5000 --restart=always --name registry -v 'pwd'/data:/var/lib/registry registry:2

ไม่มีการกำหนดค่าพร็อกซี โดยสรุปเป็นเพียงสภาพแวดล้อมตัวอย่างที่เงียบสำหรับการทดสอบเท่านั้น


ฉันก็ประสบกับข้อผิดพลาดเดียวกันเช่นกัน แต่สิ่งที่แปลกคือฉันไม่มีไฟล์ / etc / sysconfig / docker ใน RHEL 7 คุณรู้จักไฟล์ที่คล้ายกันที่ฉันสามารถค้นหาได้หรือไม่ อะไรคือเนื้อหาของไฟล์นักเทียบท่านี้? ขอขอบคุณ.
sai

ไฟล์นี้มีตัวเลือกบางอย่างหากคุณต้องการเปลี่ยนวิธีการทำงานของ Docker daemon ฉันไม่รู้เส้นทางที่แน่นอนใน RHEL7 แต่ถ้าคุณดำเนินการด้วยคำสั่ง "$ sudo locate docker" คุณจะพบไฟล์ในที่ไหนสักแห่ง
yuxiaoyu

ฉันลงเอยด้วยการลบ /etc/docker/daemon.json และเริ่มบริการนักเทียบท่าใหม่ดูเหมือนว่ามันจะลบล้างสิ่งที่ตั้งค่าไว้ใน / etc / sysconfig /
docker

สำหรับผู้ใช้ MacOS ดูคำตอบนี้: stackoverflow.com/a/39492340/706521
Adrian Forsius

คำตอบ:


222

ฉันมีปัญหาเดียวกัน

สิ่งนี้ช่วยฉันได้:

  • สร้างหรือแก้ไข/etc/docker/daemon.json บนเครื่องไคลเอนต์

    { "insecure-registries":["myregistry.example.com:5000"] }

  • รีสตาร์ท Docker daemon

    sudo /etc/init.d/docker restart


7
ในกรณีของฉันฉันใช้ Ubuntu 16.04 และ / etc / default / docker (โดยที่ config ของฉันคือ) เป็นข้อมูลเฉพาะสำหรับการเริ่มต้น 16.04 ใช้ systemd. /etc/docker/daemon.json เป็นคอนฟิกูเรชันที่ไม่ขึ้นกับแพลตฟอร์ม github.com/docker/docker/issues/23512 github.com/docker/docker/issues/23228
bojtib

1
นี่คือเอกสารวิธีการตั้งค่ารีจิสทรีที่ไม่ปลอดภัย docs.docker.com/registry/insecure
Ivailo Bardarov

6
สร้าง/etc/docker/daemon.jsonไฟล์หากไม่มี เจาะจงไปที่Ubuntu 16.04
deepdive

ใครมีข้อมูลสำหรับ MacOS บ้าง?
Adrian Forsius

สิ่งนี้ช่วยฉันได้เมื่อฉันติดตั้ง Docker V17.x. มันใช้งานไม่ได้เมื่อฉันมี docker.io v1.x
node_man

23

สำหรับผู้ใช้ Windows

เพิ่มรีจิสทรีท้องถิ่นที่นี่และสมัคร:

ป้อนคำอธิบายภาพที่นี่


7

สำหรับผู้ใช้ Mac: อัปเดตการตั้งค่านักเทียบท่าโดยใช้ไอคอน (นักเทียบท่า) ในแถบด้านบน

Preferences -> Daemon -> Insecure Registry [Click (+) sign] -> add: port

กดปุ่ม "ใช้และรีสตาร์ท" ที่ด้านล่าง

รูปแสดงหน้าต่างการตั้งค่า Docker


6

ฉันมีปัญหาเดียวกันและทำตามขั้นตอนด้านล่าง:

1. สร้างไฟล์

 vi /etc/docker/daemon.json

2. เพิ่มเนื้อหาด้านล่าง

{
        "insecure-registries":["192.168.1.142:5000"]
 }

3. รีสตาร์ท Docker

service docker restart

3

หากคุณใช้ Windows และคุณได้รับข้อผิดพลาดนี้คุณต้องสร้างไฟล์ที่นี่: "C:\ProgramData\docker\config\daemon.json"

และทำเช่นเดียวกับ @Bspec ที่กล่าวถึงข้างต้น:

{"insecure-register": ["myregistry.example.com:5000"]}

จากนั้นรีสตาร์ทนักเทียบท่าโดยใช้คำสั่ง PowerShell:

Stop-Service docker
Start-Service docker

2

การแก้ไข "/etc/docker/daemon.json" ไม่ได้ผลสำหรับฉัน

วางไว้ใต้ "/ etc / sysconfig / docker" ตามด้านล่างได้ผล

INSECURE_REGISTRY = "- รีจิสทรีที่ไม่ปลอดภัย 192.168.24.1:8787"


ขอบคุณที่แสดง--insecure-registryตัวเลือก ในกรณีของฉันมันเป็นไฟล์อื่น/etc/systemd/system/docker.service.d/docker-options.confเพราะฉันใช้ Kubespray ดังนั้นสำหรับคนอื่นคุณต้องหาDOCKER_OPTSพารามิเตอร์ของคุณ เพียงใช้การค้นหานี้: grep -ER DOCKER_OPTS /etcข้าม/etcไดเรกทอรี ในกรณีที่เฉพาะเจาะจงของฉันที่จะทำให้การตั้งค่าที่มีประสิทธิภาพที่ฉันได้: systemctl daemon-reload, systemctl restart dockerและps -ef | grep dockerdบน Ubuntu
laimison

1

ในการผลักดันให้เพิ่ม ip ลงในรีจิสทรีที่ไม่ปลอดภัยในฝั่งไคลเอ็นต์ (เช่นสำหรับ Windows)

ป้อนคำอธิบายภาพที่นี่

หากต้องการดึงให้เพิ่มไปที่ฝั่งเซิร์ฟเวอร์ (ในกรณีนี้คือ Ubuntu)

vim /etc/docker/daemon.json

ป้อนคำอธิบายภาพที่นี่

จากนั้นรีสตาร์ท Docker


0

ไม่มีวิธีแก้ปัญหาใดที่ใช้ได้กับ Ubuntu 18.04 ดังนั้นให้ใช้เวลาหาสาเหตุ

ขั้นตอนในการแก้ปัญหา

sudo vi /lib/systemd/system/docker.service
# ExecStart=dockerd .... --insecure-registry=192.168.99.100:5000
sudo systemctl stop docker.service
sudo systemctl daemon-reload
sudo systemctl start docker.service

ปัญหาคืออะไร?

ฉันอยากจะแนะนำให้ตรวจสอบว่าdockerdมีการกำหนดค่าตัวเลือกใดบ้างโดยไม่คำนึงถึงการแจกจ่าย Linux ของคุณด้วย:

sudo find /etc /lib -name 'docker*' | while read -r line; do grep dockerd $line /dev/null; done
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.