安全でないレジストリをDockerに追加する


107

CentOSでdocker 1.12を実行しています。安全でないレジストリを追加しようとしていますが、ドキュメントに記載されているものが機能しません。システムが使用する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" ]
}

そしてDockerを再起動します

sudo systemctl daemon-reload
sudo systemctl restart docker

その後、安全でないレジストリがhostname.cloudapp.net:500機能します。


4
(寛大な猶予期間を与えた後)このケースでは誰かがあなたを殴りましたが、これは自己回答の優れたケースでした。
BlackVegetable 2017

2
優れた!Openshift javamonamour.org/2017/12/docker-insecure-registry.htmlで「oc cluster up」中にこのエラーメッセージが表示され、修正により解決しました!
Pierluigi Vernetto

2
あなたの質問でCentOSに関連してこれを明示的に要求したことは知っていますが、私と同じようにmacOSソリューションを探してここに着いた人は、この質問の回答で述べたように GUIを使用してこれを行うことができます。
anotherdave

回答:


135

(質問から回答をコピー)

安全でないDockerレジストリを追加するには/etc/docker/daemon.json、次の内容のファイルを追加します。

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

そしてdockerを再起動します。


3
私はそれがdebian-likesに対する正しい解決策だと信じています。Red Hat /etc/sysconfig/dockerライクでは、たとえばOpenshiftインストールから、オプションの1つとして追加したい:OPTIONS='--insecure-registry=172.30.0.0/16 --others [...]' Suseライクでは知りません。
erikbwork 2017年

DigitalOceanでは、1クリックのDockerイメージは、daemon.jsonファイルバージョンではなくDOCKER_OPTSを使用すると考えています。ありがとう!
エリックピュー2018年

@erikbworkデフォルトのパッケージリポジトリからのDocker 1.13.1を備えたFedora 28では、を使用したアプローチは/etc/docker/daemon.json正常に機能します。
anothernode

7
このdaemon.jsonの作成後にdockerを再起動できず、エラーが表示されます: 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-registries":["hostname.cloudapp.net"]}
registries

16

/etc/docker/daemon.jsonファイルを作成し、以下のコンテンツを追加してから、CentOS 7でdocker restartを実行すると、問題が解決しました。

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

12

ソリューション /etc/docker/daemon.jsonファイルを使用した Ubuntuでは機能しませんでした。

/etc/default/dockerファイル内のDockerデーモンにコマンドラインオプションを提供することにより、UbuntuでDockerの安全でないレジストリを構成できました。例:

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

同じ方法を使用して、Dockerイメージとボリュームストレージ、デフォルトのDNSサーバーなどのカスタムディレクトリを構成できます。

Dockerデーモンが再起動した後(を実行した後sudo service docker restart)、running docker infoは次のように表示されます。

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

1

私にとっての解決策は、レジストリをここに追加することでした:

/ etc / sysconfig / docker-registries

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.