Tambahkan Registri Tidak Aman ke Docker

107

Saya memiliki buruh pelabuhan 1,12 yang berjalan di CentOS. Saya mencoba menambahkan registry yang tidak aman ke dalamnya dan hal-hal yang disebutkan dalam dokumentasi tidak berfungsi. Sistem menggunakan systemdjadi saya membuat /etc/systemd/system/docker.service.d/50-insecure-registry.conffile.

$ cat /etc/systemd/system/docker.service.d/50-insecure-registry.conf
[Service]
Environment='DOCKER_OPTS=--insecure-registry="hostname.cloudapp.net:5000"'

Setelah memuat daemon dan memulai ulang layanan buruh pelabuhan, systemd menunjukkan bahwa variabel lingkungan ada di sana

$ sudo systemctl show docker | grep Env
Environment=DOCKER_OPTS=--insecure-registry="hostname.cloudapp.net:5000"

Tetapi ketika saya menjalankan docker infosaya tidak melihat bahwa registri tidak aman ditambahkan

$ docker info
........
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

hostaneme.cloudapp.netGagal mendorong gambar ke

Pushing application     (hostname.cloudapp.net:5000/application:latest)...
The push refers to a repository     [hostname.cloudapp.net:5000/mozart_application]
ERROR: Get https://hostname.cloudapp.net:5000/v1/_ping: http: server gave HTTP response to HTTPS client

Adakah yang bisa dilakukan? Apakah saya melewatkan sesuatu?

MEMPERBARUI

Mengatasi masalah dengan menambahkan file /etc/docker/daemon.jsondengan konten berikut

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

Dan kemudian restart buruh pelabuhan

sudo systemctl daemon-reload
sudo systemctl restart docker

Setelah itu, registri tidak aman hostname.cloudapp.net:500berfungsi.

EvgeniySharapov
sumber
4
Sementara seseorang mengalahkan Anda dalam kasus ini (setelah memberi Anda masa tenggang yang murah hati), ini akan menjadi kasus yang sangat baik untuk menjawab sendiri.
BlackVegetable
2
luar biasa! Saya mendapat pesan kesalahan ini saat "oc cluster up" dengan Openshift javamonamour.org/2017/12/docker-insecure-registry.html dan perbaikan Anda menyelesaikannya!
Pierluigi Vernetto
2
Saya tahu Anda secara eksplisit menanyakan hal ini sehubungan dengan CentOS dalam pertanyaan Anda, tetapi bagi siapa pun yang datang ke sini mencari solusi macOS seperti yang saya lakukan, itu dapat dilakukan melalui GUI sekarang, seperti yang disebutkan dalam jawaban atas pertanyaan ini .
anotherdave

Jawaban:

135

(Menyalin jawaban dari pertanyaan)

Untuk menambahkan registri buruh pelabuhan yang tidak aman, tambahkan file /etc/docker/daemon.jsondengan konten berikut:

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

dan kemudian restart buruh pelabuhan.

Matt Hulse
sumber
3
Saya yakin itu adalah solusi yang tepat untuk suka debian. Di Red Hat suka, Anda ingin menambahkannya /etc/sysconfig/dockersebagai salah satu opsi, misalnya dari instalasi Openshift: OPTIONS='--insecure-registry=172.30.0.0/16 --others [...]' Di Suse-suka saya tidak tahu.
erikbwork
Di DigitalOcean, gambar Docker 1 klik masih menganggap penggunaan DOCKER_OPTS versus daemon.jsonversi file. Terima kasih!
Eric Pugh
@erikbwork Pada Fedora 28 dengan Docker 1.13.1 dari repositori paket default, pendekatan dengan /etc/docker/daemon.jsonberfungsi dengan baik.
anothernode
7
tidak dapat me-restart buruh pelabuhan setelah membuat daemon.json ini, menunjukkan kesalahan: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. @matt
AATHITH RAJENDRAN
Terima kasih, Berhasil. Dalam kasus mungkin tanpa port karena se port 80 {"insecure-registries": ["hostname.cloudapp.net"]}
Hernaldo Gonzalez
16

Membuat file /etc/docker/daemon.json dan menambahkan konten di bawah ini dan kemudian melakukan restart buruh pelabuhan di CentOS 7 menyelesaikan masalah.

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}
Cerah
sumber
12

Solusi dengan /etc/docker/daemon.jsonfile tidak berfungsi untuk saya di Ubuntu.

Saya dapat mengonfigurasi registri tidak aman Docker di Ubuntu dengan memberikan opsi baris perintah ke daemon Docker dalam /etc/default/dockerfile, misalnya:

# /etc/default/docker    
DOCKER_OPTS="--insecure-registry=a.example.com --insecure-registry=b.example.com"

Cara yang sama dapat digunakan untuk mengkonfigurasi direktori kustom untuk penyimpanan volume dan gambar buruh pelabuhan, server DNS default, dll.

Sekarang, setelah daemon Docker dimulai ulang (setelah dijalankan sudo service docker restart), menjalankan docker infoakan menampilkan:

Insecure Registries:
  a.example.com
  b.example.com
  127.0.0.0/8
Nikita
sumber
1

Bagi saya solusinya adalah menambahkan registri ke sini:

/ etc / sysconfig / docker-registries

DOCKER_REGISTRIES=''
DOCKER_EXTRA_REGISTRIES='--insecure-registry  b.example.com'
pengguna3598726
sumber
0

Jika Anda sudah memiliki file config.json maka file terakhir akan terlihat seperti ini ... Ini registry.myprivate.comyang memberi saya masalah.

{ "auths": { "https://index.docker.io/v1/": { "auth": "xxxxxxxxxxxxxxxxxxxx==" }, "registry.myprivate.com": { "auth": "xxxxxxxxxxxxxxxxxxxx=" } }, "HttpHeaders": { "User-Agent": "Docker-Client/19.03.8 (linux)" }, "insecure-registries" : ["registry.myprivate.com"] }

Gajendra D Ambi
sumber
0

Saya kebetulan mengalami masalah serupa setelah mengatur JFrog Docker Private Registry internal lokal di Amazon Linux.

Hal-hal berikut yang saya lakukan untuk menyelesaikan masalah tersebut:

Menambahkan "--insecure-registry xx.xx.xx.xx: 8081" dengan memodifikasi variabel OPTIONS di file / etc / sysconfig / docker:

OPTIONS="--default-ulimit nofile=1024:40961 --insecure-registry hostname:8081"

Kemudian restart buruh pelabuhan tersebut.

Saya kemudian dapat masuk ke registri buruh pelabuhan lokal menggunakan:

docker login -u admin -p password hostname:8081
SK Singh
sumber