ホームページ  >  記事  >  運用・保守  >  港湾労働者のプライベート倉庫を構築する方法

港湾労働者のプライベート倉庫を構築する方法

王林
王林転載
2020-11-10 16:28:202657ブラウズ

港湾労働者のプライベート倉庫を構築する方法

1. 背景の紹介

Docker で docker pull xxx コマンドを実行すると、docker がどこを検索するのか、ダウンロードはどうなるのかが気になるかもしれません。画像?

関連する推奨事項: docker チュートリアル

質問の回答:

実際には、registry.hub.docker.com アドレスから検索します。これは Docker 社が提供するパブリック ウェアハウスであり、上のイメージは誰でも利用でき、使用できます。したがって、docker pull registry.hub.docker.com/library/alpine のように、ウェアハウス アドレスを使用してイメージをプルすることもできますが、この方法でダウンロードされたイメージのデフォルト名は長くなることに注意してください。

社内で Docker を使用したい場合、商用プロジェクトを公共の倉庫にアップロードすることは基本的に不可能ですが、複数のマシンで共有したい場合はどうすればよいでしょうか?

このニーズがあるため、プライベート倉庫が活躍します。

いわゆるプライベート倉庫とは、ローカル (LAN) に構築された公共の倉庫のようなもので、構築後、イメージをプライベート倉庫に送信できます。このようにして、Docker を使用してプロジェクト イメージを実行し、商用プロジェクトが公開されるリスクを回避できます。

以下では、公式レジストリ イメージを使用してプライベート イメージ ウェアハウスを構築しますが、もちろん他にも多くの方法があります。

2. 環境

Docker がインストールされたサーバーを 2 台準備します。 サーバー マシン (ホスト名はレジストリ): Docker プライベート ウェアハウス サーバー、レジストリ コンテナーを実行します。 テスト マシン (ホスト名はノード): 通常の Docker サーバー、このサーバーにテスト イメージ nginx をダウンロードし、テストのためにレジストリ サーバーにアップロードします;

3. デプロイ (サーバー操作)

  1. イメージ レジストリのダウンロード

    # 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复制代码
  2. イメージの表示

    # docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    registry            latest              f32a97de94e1        3 months ago        25.8 MB复制代码
  3. レジストリ コンテナーの実行

    # docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name レジストリ registry:latest

    06a972de6218b1f1c3bf9b53eb9068dc66d147d14e18a89ab51db13e339d3dc9

    #パラメータの説明 -itd: 対話型操作のためにコンテナ内で疑似ターミナルを開き、バックグラウンドで実行します。 -v: データの永続性を実現するために、ホストの /data/registry ディレクトリをコンテナの /var/lib/registry ディレクトリ (このディレクトリはレジストリ コンテナ内にイメージ ファイルが保存されるディレクトリです) にバインドします。 -p: マッピング ポート。ホストの 5000 ポートにアクセスすると、レジストリ コンテナのサービスにアクセスします。 --restart=always: これは再起動戦略です。コンテナが異常終了した場合、コンテナは自動的に再起動されます。 --name registry: registry という名前のコンテナを作成します。任意の名前を付けることができます。 registry:latest: これは、取得したばかりのイメージです。

  4. #イメージ ウェアハウス内のすべてのイメージをテストします
  5. #curl http://127.0。 0.1: 5000/v2/_catalog

    {"repositories":[]}
    は実行されたばかりで画像コンテンツがないため、現在は空です。

  6. 4. テスト イメージ ウェアハウス (テスト側の操作)

    ソースとイメージ ウェアハウスを変更する
  1. # vim /etc/docker/daemon.json{"registry-mirrors": [ "https://registry.docker-cn.com"]
    }# systemctl restart docker复制代码

  2. nginx イメージをダウンロードします
  3. # docker pull nginx# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              719cd2e3ed04        2 weeks ago         109MB复制代码

  4. イメージにタグを付けます
  5. # docker tag nginx:latest registry服务器:5000/nginx:kurisu复制代码

    形式の説明: 使用法: docker タグ SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

    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复制代码

  6. ミラー サーバーへのアップロード
  7. # 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 docker
    Upload 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复制代码

  8. Test download image
  9. アップロード テストは問題ありません。レジストリ サーバーからテストしてみましょう。アップロードしたばかりの Busybox イメージをダウンロードし、まずノード ホスト上のイメージを削除します。

    # 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复制代码

  10. リモート ウェアハウスを表示します。 image

すべてのイメージのリスト:
  • # curl http://registry服务器:5000/v2/_catalog{"repositories":["nginx"]}复制代码
nginx イメージのタグのリスト:
  • # curl http://registry服务器:5000/v2/nginx/tags/list{"name":"nginx","tags":["kurisu"]}复制代码

以上が港湾労働者のプライベート倉庫を構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.imで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。