Docker で docker pull xxx コマンドを実行すると、docker がどこを検索するのか、ダウンロードはどうなるのかが気になるかもしれません。画像?
関連する推奨事項: docker チュートリアル
質問の回答:
実際には、registry.hub.docker.com アドレスから検索します。これは Docker 社が提供するパブリック ウェアハウスであり、上のイメージは誰でも利用でき、使用できます。したがって、docker pull registry.hub.docker.com/library/alpine のように、ウェアハウス アドレスを使用してイメージをプルすることもできますが、この方法でダウンロードされたイメージのデフォルト名は長くなることに注意してください。
社内で Docker を使用したい場合、商用プロジェクトを公共の倉庫にアップロードすることは基本的に不可能ですが、複数のマシンで共有したい場合はどうすればよいでしょうか?
このニーズがあるため、プライベート倉庫が活躍します。
いわゆるプライベート倉庫とは、ローカル (LAN) に構築された公共の倉庫のようなもので、構築後、イメージをプライベート倉庫に送信できます。このようにして、Docker を使用してプロジェクト イメージを実行し、商用プロジェクトが公開されるリスクを回避できます。
以下では、公式レジストリ イメージを使用してプライベート イメージ ウェアハウスを構築しますが、もちろん他にも多くの方法があります。
Docker がインストールされたサーバーを 2 台準備します。 サーバー マシン (ホスト名はレジストリ): Docker プライベート ウェアハウス サーバー、レジストリ コンテナーを実行します。 テスト マシン (ホスト名はノード): 通常の Docker サーバー、このサーバーにテスト イメージ nginx をダウンロードし、テストのためにレジストリ サーバーにアップロードします;
イメージ レジストリのダウンロード
# docker pull registryUsing default tag: latest latest: Pulling from library/registry 81033e7c1d6a: Pull complete b235084c2315: Pull complete c692f3a6894b: Pull complete ba2177f3a70e: Pull complete a8d793620947: Pull complete Digest: sha256:672d519d7fd7bbc7a448d17956ebeefe225d5eb27509d8dc5ce67ecb4a0bce54 Status: Downloaded newer image for registry:latest复制代码
イメージの表示
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE registry latest f32a97de94e1 3 months ago 25.8 MB复制代码
レジストリ コンテナーの実行
# docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name レジストリ registry:latest
06a972de6218b1f1c3bf9b53eb9068dc66d147d14e18a89ab51db13e339d3dc9
{"repositories":[]}
は実行されたばかりで画像コンテンツがないため、現在は空です。
# vim /etc/docker/daemon.json{"registry-mirrors": [ "https://registry.docker-cn.com"] }# systemctl restart docker复制代码
# docker pull nginx# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 719cd2e3ed04 2 weeks ago 109MB复制代码
# docker tag nginx:latest registry服务器:5000/nginx:kurisu复制代码
nginx:lastest
これは、ソース イメージと取得したばかりのイメージ ファイルです。registry server:5000/nginx:kurisu
これは、ターゲット ミラーは、レジストリのプライベート ミラー サーバーの IP アドレスとポートでもあります。効果の表示
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry服务器:5000/nginx kurisu 719cd2e3ed04 2 weeks ago 109MB nginx latest 719cd2e3ed04 2 weeks ago 109MB复制代码
# docker push registry服务器:5000/nginxThe push refers to repository [registry服务器:5000/nginx] Get https://registry服务器:5000/v2/: http: server gave HTTP response to HTTPS client复制代码
これはエラーです。アップロードするには https メソッドが必要です。問題を解決するには、daemon.json を変更できます:
[root@node ~]# vim /etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn.com"], "insecure-registries": [ "registry服务器:5000"] }复制代码
プライベート ミラー サーバーのアドレスを追加します。書き込み形式は json であることに注意してください。は厳密な記述要件であるため、docker サービスを再起動します。
# systemctl restart dockerUpload again:
# docker push registry服务器:5000/nginxThe push refers to repository [registry服务器:5000/nginx] d7acf794921f: Pushed d9569ca04881: Pushed cf5b3c6798f7: Pushed kurisu: digest: sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe size: 948复制代码
# docker rmi -f $(docker images -aq)Untagged: registry服务器:5000/nginx:kurisu Untagged: registry服务器:5000/nginx@sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe Untagged: nginx:latest Untagged: nginx@sha256:bdbf36b7f1f77ffe7bd2a32e59235dff6ecf131e3b6b5b96061c652f30685f3a Deleted: sha256:719cd2e3ed04781b11ed372ec8d712fac66d5b60a6fb6190bf76b7d18cb50105 Deleted: sha256:e9b6506fb887de50972aefd99d7c5eb56b1a8e757ed953cdfecb86b5359bcb22 Deleted: sha256:55d9d9692a9615a28d183a42bc3881a72a39393feba3664e669e7affb78daa76 Deleted: sha256:cf5b3c6798f77b1f78bf4e297b27cfa5b6caa982f04caeb5de7d13c255fd7a1e复制代码
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE复制代码
次に、レジストリ サーバーから nginx イメージをダウンロードします。
# docker pull registry服务器:5000/nginx:kurisukurisu: Pulling from nginxfc7181108d40: Pull complete c4277fc40ec2: Pull complete 780053e98559: Pull complete Digest: sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe Status: Downloaded newer image for registry服务器:5000/nginx:kurisu复制代码
ノード ホスト上のイメージを表示します。
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE registry服务器:5000/nginx kurisu 719cd2e3ed04 2 weeks ago 109MB复制代码
# curl http://registry服务器:5000/v2/_catalog{"repositories":["nginx"]}复制代码
# curl http://registry服务器:5000/v2/nginx/tags/list{"name":"nginx","tags":["kurisu"]}复制代码
以上が港湾労働者のプライベート倉庫を構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。