レジストリイメージを取得して実行することにより、サーバー上に独自のプライベートレジストリを作成しました。
Sudo docker run -d -p 5000:5000 registry
その後、簡単な画像にタグを付けてサーバーにプッシュしようとしました。
Sudo docker tag ubuntu:latest localhost:5000/myprivateubuntu
そして私はこのエラーを受け取りました:
Error: Invalid registry endpoint ... Get ... If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add '--insecure-registry localhost: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/localhost:5000/ca.crt
とにかく問題が何であるか知っていますか?
サービスを停止します。
Sudo service docker stop
--insecure-registry
引数を使用してサービスを再起動します。
/usr/bin/docker -d --insecure-registry localhost:5000
または/etc/default/docker
ファイルを編集して、次の行を追加します。
DOCKER_OPTS="--insecure-registry localhost:5000"
受け入れられた回答のコメントから、ソリューションはすべてに対して機能しないようです。次の解決策は私のために働きます。
systemd
confオーバーライドファイルを作成するSudo mkdir /etc/systemd/system/docker.service.d
Sudo touch /etc/systemd/system/docker.service.d/docker.conf
Sudo vi /etc/systemd/system/docker.service.d/docker.conf
次の行を追加して保存します
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS
EnvironmentFile=-/etc/default/docker
/etc/default/docker
Sudo vi /etc/default/docker
次の行を追加して保存します。置換localhost:5000
はレジストリドメイン名とポート
DOCKER_OPTS="--insecure-registry localhost:5000"
docker
デーモンを再起動しますオーバーライドされた設定をリロードし、次のようにdocker
を再起動します
Sudo systemctl daemon-reload
Sudo systemctl restart docker
Dockerにプロキシと一緒にローカルの安全でないレジストリを設定する:
1)ubuntuで次のフラグを追加します--insecure-registry IP:ポート/ etc/default/dockerのDOCKER_OPTSの下
1.1)ローカルIP /ホスト名/ドメイン名をバイパスするようにno_proxy環境変数を構成します...プロキシは続行のようにインタラクティブメッセージをスローできるため、この中間のメッセージはDockerクライアントを混乱させ、最終的にタイムアウトします...
1.2)ドメイン名が設定されている場合... DNSを使用していない場合は、/ etc/hostsファイルを更新することを忘れないでください。
1.3)/ etc/default/dockerで、環境変数http_proxyおよびhttps_proxy ...を設定します。これにより、社外のハブからイメージをダウンロードできるようになります。形式http_proxy = http:// username:password @ proxy:port
2)dockerサービスを再起動します...サービスとしてインストールされている場合は、Sudo service docker restartを使用します
3)レジストリコンテナーを再起動します[Sudo docker run -p 5000:5000 registry:2]
4)Sudo docker tag imageid IP:port/imagename/tagname ifanyを使用して必要なイメージにタグを付けます
5)イメージをプッシュします... Sudo docker Push ip:port/imagename
6)別のマシンからイメージをプルしたい場合は、TLS/SSLなしでBと言ってから、Bでsetps 1,1.1および2を適用します。これらの変更がマシンBで行われていない場合.pullは失敗します。
以前のソリューションの上に構築された私のソリューション。
# docker -v
Docker version 18.09.1, build 4c52b90
# uname -a
Linux Host 4.15.0-43-generic #46~16.04.1-Ubuntu SMP Fri Dec 7 13:31:08 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
/etc/docker/daemon.json
ファイルの内容:
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
},
"insecure-registries" : [
"ipaddress:port"
],
"experimental" : false,
"debug" : true
}
ここで、ipaddress:port
は、レジストリマシンのドット付きIPv4アドレスで、その後にレジストリポートが続きます(例:127.0.0.1:12345
)。 http://
などのプレフィックスを付ける必要はありませんでした。
/etc/default/docker
への変更はありません
そして、私はデーモンをリロードして再起動しました:
# Sudo systemctl daemon-reload
# Sudo systemctl restart docker
安全でないレジストリへのdocker Push
が機能するようになりました。