Tidak bisa menarik / mendorong gambar setelah memperbarui buruh pelabuhan ke 1.12

86

Registri pribadi bekerja dengan baik berdasarkan buruh pelabuhan 1.10.3, tetapi saya tidak dapat menarik / mendorong gambar setelah buruh pelabuhan diperbarui ke 1.12.0.

Saya telah memodifikasi / etc / sysconfig / docker sebagai:

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

atau

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

tetapi ketika saya eksekutif tarik / dorong, saya mendapat kesalahan ini:

$ 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

ketika saya mengubah kembali buruh pelabuhan ke 1.10.3, itu masih berfungsi dengan baik seperti di bawah ini:

$ 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

Beberapa informasi relatif tercantum di bawah ini:

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

Setelah saya me-restart daemon buruh pelabuhan dalam mode debug, log daemon saat mereproduksi masalah saya tercantum di bawah ini:

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

Terlebih lagi, saya hanya menjalankan perintah sederhana untuk meluncurkan registri pribadi untuk pengujian, yang lainnya secara default:

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

Tidak ada proxy yang dikonfigurasi. Singkatnya, ini hanya lingkungan sampel yang tenang untuk pengujian.

yuxiaoyu
sumber
Yah, saya juga menghadapi kesalahan yang sama, tetapi yang aneh adalah saya tidak memiliki file / etc / sysconfig / docker di RHEL 7, apakah Anda tahu file serupa yang dapat saya temukan? apa isi dari file buruh pelabuhan ini? Terima kasih.
sai
File ini menyertakan beberapa opsi jika Anda ingin mengubah cara daemon buruh pelabuhan berjalan. Saya tidak tahu jalur pasti di RHEL7. Tetapi jika Anda mengeksekusi dengan perintah "$ sudo cari buruh pelabuhan", Anda akan menemukan file di suatu tempat
yuxiaoyu
Saya akhirnya menghapus /etc/docker/daemon.json dan memulai kembali layanan buruh pelabuhan, sepertinya itu menimpa apa yang diatur di / etc / sysconfig / buruh pelabuhan
Max Barrass
Untuk pengguna MacOS, lihat jawaban ini: stackoverflow.com/a/39492340/706521
Adrian Forsius

Jawaban:

222

Saya memiliki masalah yang sama.

Ini membantu saya:

  • Buat atau modifikasi /etc/docker/daemon.json di mesin klien

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

  • Mulai ulang daemon buruh pelabuhan

    sudo /etc/init.d/docker restart

bojtib.dll
sumber
7
Dalam kasus saya, saya menggunakan Ubuntu 16.04 dan / etc / default / docker (tempat konfigurasi saya) khusus untuk pemula. 16.04 menggunakan systemd. /etc/docker/daemon.json adalah konfigurasi platform-independen. github.com/docker/docker/issues/23512 github.com/docker/docker/issues/23228
bojtib
1
Berikut adalah dokumentasi cara menyiapkan dokumen registri tidak aman docs.docker.com/registry/insecure
Ivailo Bardarov
6
Buat /etc/docker/daemon.jsonfile jika tidak ada. Khusus untukUbuntu 16.04
deepdive
Ada yang punya info untuk MacOS?
Adrian Forsius
ini membantu saya ketika saya menginstal buruh pelabuhan V17.x. Entah bagaimana itu tidak berhasil ketika saya memiliki docker.io v1.x
node_man
23

Untuk pengguna Windows

Tambahkan registri lokal di sini dan terapkan:

masukkan deskripsi gambar di sini

kogoia
sumber
7

Untuk Pengguna Mac: Perbarui preferensi buruh pelabuhan menggunakan ikon (buruh pelabuhan) di bar bagian atas

Preferensi -> Daemon -> Registri Tidak Aman [Klik (+) tanda] -> tambahkan: port

tekan tombol "Terapkan & Mulai Ulang" di bagian bawah

Gambar menunjukkan jendela preferensi Docker

Raman Garg
sumber
6

Saya juga memiliki masalah yang sama dan mengikuti langkah-langkah di bawah ini:

1. Buat file

 vi /etc/docker/daemon.json

2. Tambahkan konten di bawah ini

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

3. Mulai ulang Docker

service docker restart
Hasitha
sumber
3

Jika Anda menggunakan Windows dan mendapatkan kesalahan ini, Anda perlu membuat file di sini: "C:\ProgramData\docker\config\daemon.json"

dan lakukan hal yang sama seperti @Bspec yang disebutkan di atas:

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

Kemudian restart buruh pelabuhan menggunakan perintah PowerShell:

Stop-Service docker
Start-Service docker
Shahar Hamuzim Rajuan
sumber
2

memodifikasi "/etc/docker/daemon.json" tidak berhasil untuk saya.

Menempatkannya di bawah "/ etc / sysconfig / docker" seperti di bawah ini, berhasil.

INSECURE_REGISTRY = "- registri tidak aman 192.168.24.1:8787"

brncoguz.dll
sumber
Terima kasih telah menunjukkan --insecure-registryopsi kepada kami . Dalam kasus saya, itu bahkan file lain /etc/systemd/system/docker.service.d/docker-options.confkarena saya menggunakan Kubespray. Jadi untuk orang lain: Anda perlu menemukan DOCKER_OPTSparameter Anda . Cukup gunakan pencarian ini: grep -ER DOCKER_OPTS /etcdi seluruh /etcdirektori. Dalam kasus tertentu, untuk membuat pengaturan yang efektif saya lakukan: systemctl daemon-reload, systemctl restart dockerdan ps -ef | grep dockerdpada Ubuntu.
laimison
1

Untuk mendorong , tambahkan ip ke registri tidak aman di sisi klien (misalnya untuk Windows)

masukkan deskripsi gambar di sini

Untuk menarik , tambahkan ke sisi server (dalam hal ini Ubuntu)

vim /etc/docker/daemon.json

masukkan deskripsi gambar di sini

lalu mulai ulang Docker.

Sumia
sumber
0

Tidak ada solusi yang berfungsi di Ubuntu 18.04, jadi luangkan waktu untuk menemukan akar masalahnya.

Langkah-langkah untuk memecahkan masalah

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

Apa masalahnya?

Saya akan merekomendasikan untuk memeriksa di mana tepatnya dockerdopsi dikonfigurasi terlepas dari Anda distribusi Linux dengan:

sudo find /etc /lib -name 'docker*' | while read -r line; do grep dockerd $line /dev/null; done
laimison
sumber