डॉकर में असुरक्षित रजिस्ट्री जोड़ें


107

मेरा एक डॉकटर 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"'

डेमॉन लोड करने और 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
जबकि कोई आपको इस मामले में (एक उदार अनुग्रह अवधि देने के बाद) हरा देता है, यह एक आत्म-उत्तर के लिए एक उत्कृष्ट मामला होता।
ब्लैकवेटेबल जूल

2
अति उत्कृष्ट! Openshift javamonamour.org/2017/12/docker-insecure-registry.html के साथ "महासागर क्लस्टर अप" करते समय मेरे पास यह त्रुटि संदेश था और आपके द्वारा इसे हल कर दिया गया था!
पियरलुगी वर्नेट्टो

2
मुझे पता है कि आपने अपने प्रश्न में CentOS के संबंध में स्पष्ट रूप से इसके लिए कहा था, लेकिन किसी भी व्यक्ति ने जो यहां एक macOS समाधान की तलाश में है जैसे मैंने किया था, यह अब GUI के माध्यम से किया जा सकता है, जैसा कि इस प्रश्न पर उत्तर में बताया गया है
anotherdave

जवाबों:


135

(प्रश्न से उत्तर कॉपी करना)

असुरक्षित डॉकटर रजिस्ट्री जोड़ने के लिए /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 पर, 1 क्लिक डॉकर छवि अभी भी सोचती है कि daemon.jsonफ़ाइल वर्जन बनाम DOCKER_OPTS का उपयोग करें । धन्यवाद!
एरिक पुग

@erikbwork पर फेडोरा 28 डिफ़ॉल्ट पैकेज रिपोज से 1.13.1 डॉक के साथ, /etc/docker/daemon.jsonठीक काम करता है।
18'18

7
इस डेमॉन को बनाने के बाद डॉकटर पुनः आरंभ नहीं कर सकता। त्रुटि दिखाते हुए: 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 {"असुरक्षित-रजिस्ट्रियां": ["hostname.cloudapp.net"]}}
हर्नाल्डो गोंजालेज

16

/Etc/docker/daemon.json फ़ाइल बनाना और नीचे दी गई सामग्री को जोड़ना और फिर CentOS 7 पर docker पुनरारंभ करने से समस्या हल हो गई।

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

12

/etc/docker/daemon.jsonफ़ाइल के साथ समाधान उबंटू पर मेरे लिए काम नहीं किया।

मैं /etc/default/dockerफ़ाइल में डोकर डेमॉन को कमांड लाइन विकल्प प्रदान करके Ubuntu पर Docker असुरक्षित रजिस्ट्रियों को कॉन्फ़िगर करने में सक्षम था , जैसे:

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

उसी तरह का उपयोग डॉक छवियों और वॉल्यूम संग्रहण, डिफ़ॉल्ट DNS सर्वर, आदि के लिए कस्टम निर्देशिका को कॉन्फ़िगर करने के लिए किया जा सकता है।

अब, डॉकर डेमॉन के पुनः आरंभ होने (निष्पादित होने के बाद sudo service docker restart) के बाद , रनिंग docker infoदिखाएगा:

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

1

मेरे लिए समाधान यहाँ रजिस्ट्री को जोड़ना था:

/ Etc / sysconfig / डोकर-रजिस्ट्रियों

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 निजी रजिस्ट्री की स्थापना के बाद इसी तरह के मुद्दे का सामना करने के लिए हुआ।

समस्या को हल करने के लिए मैंने जो अनुसरण किया है:

/ Etc / sysconfig / docker फ़ाइल में विकल्प चर को संशोधित करके "--insecure-रजिस्ट्री xx.xx.xx.xx: 8081" जोड़ा गया:

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

फिर कर्ता को फिर से शुरू किया।

मैं तब स्थानीय docker रजिस्ट्री का उपयोग करके लॉगिन करने में सक्षम था:

docker login -u admin -p password hostname:8081
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.