84

https://github.com/docker/docker-registryから取得したイメージを使用して、プライベート docker レジストリをセットアップしようとしています 。

実行するだけで:
docker run -p 5000:5000 registry

このリポジトリとの間でプル/プッシュできるのは localhost からのみですが、(同じ LAN 上のプライベート アドレスを使用して) 別のマシンからアクセスしようとすると、次のエラー メッセージが表示されて失敗します。

*2014/11/03 09:49:04 Error: Invalid registry endpoint https ://10.0.0.26:5000/v1/': 
Get https:// 10.0.0.26:5000/v1/_ping: Forbidden. If this private 
registry supports only HTTP or HTTPS with an unknown CA certificate,
please add `--insecure-registry 10.0.0.26:5000` to the daemon's 
arguments. In the case of HTTPS, if you have access to the registry's
CA certificate, no need for the flag; simply place the CA certificate 
at /etc/docker/certs.d/10.0.0.26:5000/ca.crt*

私を夢中にさせているのは、以下を使用して正常にアクセスできることです。 curl 10.0.0.26:5000 および/またはcurl 10.0.0.26:5000/v1/search

また、どこにどのように--insecure-registryフラグを渡す必要があるのか​​ わかりません。

4

15 に答える 15

73

OK - 私はこれに対する解決策を見つけました - 一日掘り下げた後。

1.12.1 未満の docker の場合:

新しいクライアント バージョンは、SSL を使用しないプライベート レジストリでの動作を拒否することが判明しました。

これを修正するには、クライアント マシンのデーモンを insecure フラグで起動する必要があります。

次のように入力します。

sudo service docker stop # to stop the service

その後

sudo docker -d --insecure-registry 10.0.0.26:5000

10.0.0.26(を自分の IP アドレスに置き換えます)。

ドッカーの連中がこのオプションをプル/プッシュコマンドラインに追加することを期待しています...

編集 - または - DOCKER_OPTS/etc/default/docker... 内の env 変数にフラグを追加してから、sudo service docker restart

もう一度編集してください - ドッカーの連中がそれに取り組んでいるようです - そして修正はすぐに来るでしょう: https://github.com/docker/docker/pull/8935

ドッカー 1.12.1 の場合:

以下の vikas027 の回答に従ってください (centos に有効)

于 2014-11-03T11:29:28.893 に答える
24

構成ファイル「/etc/default/docker」を編集します

sudo vi /etc/default/docker

ファイルの最後に行を追加します

DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=192.168.2.170:5000"

(192.168.2.170 を自分の IP アドレスに置き換えます)

dockerサービスを再起動します

sudo サービス docker 再起動

于 2014-12-17T09:39:36.507 に答える
12

以下は、Docker サービス自体がどのように構成されているかを説明しているため、非常に役立つことがわかりました。https://docs.docker.com/articles/systemd/

systemctl コマンドに関するこの記事とともにhttps://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units

「docker pull registry:2.1.1」で取得したレジストリ イメージを使用して、Centos 7 ベースのコンテナーで次の一連のコマンドを使用しました。

sudo mkdir -p /etc/systemd/system/docker.service.d
cd /etc/systemd/system/docker.service.d
sudo touch override.conf
sudo nano override.conf

そして、override.conf 内に以下を追加しました。

[Service]
ExecStart=
ExecStart=/usr/bin/docker -d -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --insecure-registry 10.2.3.4:5000

最初の空白の ExecStart= は、既に配置されているものをすべてクリアすることに注意してください。そのため、保持したい /usr/lib/systemd/system/docker.service ExecStart= ステートメントから何かを必ず追加してください。

-d(daemon) オプションを指定しないと、「-H を 1 つだけ指定してください」というエラーが発生します。

次の一連のコマンドを発行すると、オーバーライドが適切に行われていることがわかります。

sudo systemctl stop docker
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl status docker

docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─override.conf
   Active: active (running) since Thu 2015-09-17 13:37:34 AEST; 7s ago
     Docs: https://docs.docker.com
 Main PID: 5697 (docker)
   CGroup: /system.slice/docker.service
           └─5697 /usr/bin/docker -d -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --insecure-registry 10.2.3.4:5000

注: ステータス メッセージの Loaded: および Drop-In: 行によって提供される情報は、既存の docker デーモンの動作を確認するのに役立ちます。

注: さらに手掛かりについては、Loaded: docker.service ファイルの EnvironmentFile= も参照してください。

于 2015-09-17T03:47:21.207 に答える
9

次のコマンドを使用して、{YOUR_REGISTRY} をレジストリに置き換えます

boot2docker ssh "echo $'EXTRA_ARGS=\"--insecure-registry {YOUR_REGISTRY}\"' | sudo tee -a /var/lib/boot2docker/profile && sudo /etc/init.d/docker restart"
于 2015-06-10T21:36:58.367 に答える
4

ドッカー 1.12.1

CentOS 7.2の場合

/usr/lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd
ExecStart=/usr/bin/dockerd --insecure-registry my-docker-registry.com:5000

Ubuntu 16.04の場合

/lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd -H fd://
ExecStart=/usr/bin/dockerd --insecure-registry my-docker-registry.com:5000 -H fd://

sudo systemctl stop docker
sudo systemctl daemon-reload
sudo systemctl start docker

--insecure-registry オプションは、レジストリ ID との間に「=」を付けても付けなくても使用できるようです。

于 2016-11-16T13:16:08.527 に答える
0

Ubuntu 16.04

次の内容のファイルを作成します (存在しません) /etc/systemd/system/docker.service.d/registry.conf:

[Service]
#You need the below or you 'ExecStart=' or you will get and error 'Service has more than one ExecStart= setting, which is only allowed'
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 10.20.30.40:5000

それから

sudo systemctl stop docker
sudo systemctl daemon-reload
sudo systemctl start docker
于 2017-03-24T11:50:12.237 に答える