เพิ่ม Insecure Registry ให้กับ Docker


108

ฉันมีนักเทียบท่า 1.12 ที่ทำงานบน CentOS ฉันพยายามเพิ่มรีจิสทรีที่ไม่ปลอดภัยและสิ่งที่กล่าวถึงในเอกสารประกอบก็ไม่ได้ผล ระบบใช้systemdดังนั้นฉันจึงสร้าง/etc/systemd/system/docker.service.d/50-insecure-registry.confไฟล์

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

หลังจากโหลด daemon และรีสตาร์ทเซอร์วิส docker systemd จะแสดงว่ามีตัวแปรสภาวะแวดล้อมอยู่ที่นั่น

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

แต่เมื่อฉันเรียกใช้docker infoฉันไม่เห็นว่ามีการเพิ่มรีจิสทรีที่ไม่ปลอดภัย

$ 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.netล้มเหลวด้วย

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

มีอะไรที่สามารถทำได้? ฉันพลาดอะไรไปรึเปล่า ?

อัปเดต

แก้ไขปัญหาโดยการเพิ่มไฟล์ที่/etc/docker/daemon.jsonมีเนื้อหาต่อไปนี้

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

จากนั้นรีสตาร์ทนักเทียบท่า

sudo systemctl daemon-reload
sudo systemctl restart docker

หลังจากนั้นรีจิสทรีที่ไม่ปลอดภัยจะhostname.cloudapp.net:500ทำงาน


4
ในขณะที่มีคนเอาชนะคุณในกรณีนี้ (หลังจากให้ระยะเวลาผ่อนผันแก่คุณแล้ว) นี่เป็นกรณีที่ยอดเยี่ยมสำหรับการตอบคำถามด้วยตนเอง
BlackVegetable

2
ยอดเยี่ยม! ฉันได้รับข้อความแสดงข้อผิดพลาดนี้ขณะ "oc คลัสเตอร์ขึ้น" ด้วย Openshift javamonamour.org/2017/12/docker-insecure-registry.htmlและการแก้ไขของคุณแก้ไขได้
Pierluigi Vernet ถึง

2
ฉันรู้ว่าคุณถามเรื่องนี้อย่างชัดเจนเกี่ยวกับ CentOS ในคำถามของคุณ แต่สำหรับทุกคนที่มาที่นี่เพื่อมองหาโซลูชัน macOS เหมือนที่ฉันทำสามารถทำได้ผ่าน GUI ทันทีดังที่กล่าวไว้ในคำตอบของคำถามนี้
anotherdave

คำตอบ:


138

(คัดลอกคำตอบจากคำถาม)

ในการเพิ่มรีจิสทรีนักเทียบท่าที่ไม่ปลอดภัยให้เพิ่มไฟล์ที่/etc/docker/daemon.jsonมีเนื้อหาต่อไปนี้:

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

แล้วรีสตาร์ทนักเทียบท่า


3
ฉันเชื่อว่านั่นเป็นทางออกที่ถูกต้องสำหรับการชอบเดเบียน ใน Red Hat ชอบที่คุณต้องการเพิ่ม/etc/sysconfig/dockerเป็นหนึ่งในตัวเลือกเช่นจากการติดตั้ง Openshift: OPTIONS='--insecure-registry=172.30.0.0/16 --others [...]' บน Suse-likes ฉันไม่รู้
erikbwork

บน DigitalOcean ภาพ Docker 1 คลิกยังคงคิดว่าใช้ DOCKER_OPTS เทียบกับdaemon.jsonเวอร์ชันไฟล์ ขอบคุณ!
Eric Pugh

@erikbwork บน Fedora 28 พร้อม Docker 1.13.1 จาก repos แพ็กเกจเริ่มต้นแนวทางที่ใช้/etc/docker/daemon.jsonงานได้ดี
anothernode

7
ไม่สามารถรีสตาร์ท docker ได้หลังจากสร้าง daemon.json นี้แสดงข้อผิดพลาด: 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

ขอบคุณมันได้ผล ในกรณีที่ไม่มีพอร์ตเพราะพอร์ต 80 {"insecure-register": ["hostname.cloudapp.net"]}
Hernaldo Gonzalez

16

การสร้างไฟล์ /etc/docker/daemon.json และเพิ่มเนื้อหาด้านล่างจากนั้นทำการรีสตาร์ท Docker บน CentOS 7 เพื่อแก้ไขปัญหา

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

12

วิธีแก้ปัญหากับ/etc/docker/daemon.jsonไฟล์ไม่ได้ผลสำหรับฉันบน Ubuntu

ฉันสามารถกำหนดค่าการลงทะเบียนที่ไม่ปลอดภัยของ Docker บน Ubuntu ได้โดยการให้ตัวเลือกบรรทัดคำสั่งแก่ Docker daemon ใน/etc/default/dockerไฟล์เช่น:

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

วิธีเดียวกันนี้สามารถใช้ในการกำหนดค่าไดเร็กทอรีที่กำหนดเองสำหรับอิมเมจนักเทียบท่าและพื้นที่จัดเก็บไดรฟ์ข้อมูลเซิร์ฟเวอร์ DNS เริ่มต้น ฯลฯ

ตอนนี้หลังจากที่ Docker daemon รีสตาร์ทแล้ว (หลังจากsudo service docker restartเรียกใช้งาน) การรันdocker infoจะแสดง:

Insecure Registries:
  a.example.com
  b.example.com
  127.0.0.0/8

1

สำหรับฉันวิธีแก้ปัญหาคือเพิ่มรีจิสทรีที่นี่:

/ etc / sysconfig / docker-register

DOCKER_REGISTRIES=''
DOCKER_EXTRA_REGISTRIES='--insecure-registry  b.example.com'

0

หากคุณมีไฟล์ config.json อยู่แล้วไฟล์สุดท้ายควรมีลักษณะดังนี้ ... นี่registry.myprivate.comคือไฟล์ที่ทำให้ฉันมีปัญหา

{ "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"] }


0

ฉันประสบปัญหาคล้าย ๆ กันหลังจากตั้งค่า JFrog Docker Private Registry ภายในเครื่องบน Amazon Linux

สิ่งต่อไปนี้ที่ฉันทำเพื่อแก้ปัญหา:

เพิ่ม "--insecure-Registry xx.xx.xx.xx: 8081" โดยการแก้ไขตัวแปร OPTIONS ในไฟล์ / etc / sysconfig / docker:

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

จากนั้นรีสตาร์ทนักเทียบท่า

จากนั้นฉันก็สามารถเข้าสู่ระบบลงทะเบียนนักเทียบท่าในเครื่องโดยใช้:

docker login -u admin -p password hostname:8081
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.