web-dev-qa-db-ja.com

Docker-画像をプライベートレジストリにプッシュできません

レジストリイメージを取得して実行することにより、サーバー上に独自のプライベートレジストリを作成しました。

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

とにかく問題が何であるか知っていますか?

12
Hans

サービスを停止します。

Sudo service docker stop

--insecure-registry引数を使用してサービスを再起動します。

/usr/bin/docker -d --insecure-registry localhost:5000

または/etc/default/dockerファイルを編集して、次の行を追加します。

DOCKER_OPTS="--insecure-registry localhost:5000"
21
cizixs

受け入れられた回答のコメントから、ソリューションはすべてに対して機能しないようです。次の解決策は私のために働きます。

Docker用の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 
1
Nur Rony

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は失敗します。

0
Ragha

以前のソリューションの上に構築された私のソリューション。

# 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が機能するようになりました。

0
schnee