Docker の紹介と実践的なチュートリアル

Docker の概要

  • Dockerが登場した理由
    • ソフトウェア開発に携わっている友人は、次のようなシナリオに遭遇することがよくあります。
    • 運用と保守: プログラムにはバグがあるのに、なぜ実行できないのでしょう。
    • 開発: 私のマシンで実行できますが、使用できますか?
    • その理由は、コンパイラ、データベースのバージョンが一致していない、または一部のコンポーネントが欠落しているなど、開発環境が本番環境と異なるためです。O&M には環境の再展開が必要ですが、これには時間と労力がかかります。
    • そこで、この問題を根本的に解決して、その環境にソフトウェアをインストールできるのだろうか、と考える人もいるでしょう。つまり、インストールする際は元の環境をそのままコピーするということでしょうか?もちろん可能です。答えは Docker です。
    • Dockerは、開発環境にあるシステム以外のすべてをミラーにパッケージ化して運用保守に引き渡すことができ、運用保守はこのミラーを本番環境に設置した後、本番環境と開発環境を確実に連携させることができます。環境が異なるとプログラムが正常に動作しないという問題は完全に一致しており、完全に解決できます。また、新しいマシンに展開する場合も直接インストールできるため、環境の展開に時間と労力を無駄にする必要はありません。
  • ドッカーとは何ですか
    • Docker は、Go 言語に基づくクラウド オープン ソース プロジェクトです。主な目標は、「どこでも、あらゆるアプリを構築、出荷、実行できる」ことです。つまり、パッケージ化、配布、展開、運用などのアプリケーション コンポーネントのライフ サイクルの管理を通じて、ユーザーのアプリとその動作環境を「どこでも」実現できます。一度ミラーリングすれば、どこでも実行できます。」
    • 動作環境と構成の問題を解決し、リリース全体に貢献する継続的統合とコンテナ仮想化テクノロジを促進するソフトウェア コンテナ。
  • Docker では何ができるのでしょうか?
    • 従来のアプリケーション開発が完了すると、大量のインストールプログラムと設定手順が提供され、インストールと展開後に正常に動作させるためには設定ドキュメントに従って面倒な設定を行う必要がありました。Docker化後は、少量のコンテナイメージファイルを配信するだけで、そのイメージをロードして正式な本番環境で実行できますアプリケーションのインストール構成はイメージにすでに組み込まれているため、デプロイメント構成とテスト検証が大幅に節約されます時間。

コンテナとVM

  • 仮想マシン テクノロジの場合、従来の仮想マシンはハードウェアを含むマシン全体をシミュレートする必要があり、各仮想マシンには独自のオペレーティング システムが必要であり、仮想マシンが起動されると、事前に割り当てられたすべてのリソースが占有されます。各仮想マシンには、アプリケーション、必要なバイナリとライブラリ、および完全なユーザー オペレーティング システムが含まれています
  • コンテナテクノロジーはハードウェアリソースとオペレーティングシステムをホストと共有し、リソースの動的な割り当てを可能にします。コンテナにはアプリケーションとそのすべての依存関係が含まれていますが、カーネルは他のコンテナと共有します。コンテナーは、ホスト オペレーティング システム上のユーザー空間で別個のプロセスとして実行されます。コンテナーには独自のカーネルがなく、ハードウェア仮想化も行いません。
    画像の説明を追加してください

    仮想マシン 容器
    起動速度 分レベル セカンドレベル
    運転性能 約5%の損失 ネイティブに近い
    ディスクの使用状況 GB MB
    隔離 システムレベル プロセスレベル
    カプセル化度 完全なオペレーティングシステム コードと依存環境のみをパッケージ化し、ホスト カーネルを共有する

ドッカー Web サイト

Docker の 3 つの要素

  • 鏡像
    • イメージを使用して Docker コンテナーを作成でき、1 つのイメージで複数のコンテナーを作成できます。イメージをクラスと比較すると、コンテナはクラスからインスタンス化されたクラス オブジェクトです。
  • 容器
    • Docker はコンテナを使用して、1 つまたは複数のアプリケーションを独立して実行します。アプリケーションまたはサービスはコンテナ内で実行されます。コンテナは仮想化されたオペレーティング環境に似ています。コンテナはイメージで作成されたインスタンスを実行します。コンテナーは、イメージの開始、開始、停止、削除が可能な標準的で独立したオペレーティング環境を提供します。各コンテナは、分離された安全なプラットフォームです。
  • 倉庫
    • 画像ファイルの一元保存

Docker のインストール

  • CentOS インストール Docker プロセス
  • インストールの準備
    • Centos インストール Docker は、バージョンが少なくとも centos7 であることに注意する必要があります
  • 古いバージョンをアンインストールする
    • docker が既にインストールされている場合は、次のコマンドを実行してアンインストールします
    •  sudo yum remove docker \
                 docker-client \
                 docker-client-latest \
                 docker-common \
                 docker-latest \
                 docker-latest-logrotate \
                 docker-logrotate \
                 docker-engine
      
  • gccをインストールする
    •   yum -y install gcc
        yum -y install gcc-c++
      
  • パッケージをインストールする
    •   sudo yum install -y yum-utils
      
  • 安定したミラーリポジトリをセットアップする
    •   sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      
  • yum パッケージのインデックスを更新する
    •    yum makecache fast
      
  • ドッカーをインストールする
    •   sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      
  • ドッカーをアンインストールする
    •   	systemctl stop docker
        	sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 
        	sudo rm -rf /var/lib/docker
        	sudo rm -rf /var/lib/containerd
      

ドッカーテスト

  • ドッカーを起動します
    • sudo systemctl ドッカーを開始
  • Docker のバージョンを表示する
    • ドッカーのバージョン
    • Docker のバージョン情報を表示できます。これは、インストールが成功したことを意味します。

Alibaba Cloud コンテナイメージの構成

  • Alibaba Cloud ミラーリングを構成すると、ミラーをプルする際の速度が向上します。
  • アリユン公式サイト
  • ここでコンテナミラーリングサービスを検索します
    ここに画像の説明を挿入
    • 無料トライアルを選択してください
      ここに画像の説明を挿入
    • ここに従ってください
      ここに画像の説明を挿入

Docker の一般的なコマンド

  • ヘルプ開始クラスコマンド
    • docker を開始します: systemctl start docker
    • 停止docker:systemctl stop docker
    • docker を再起動します: systemctl docker を再起動します
    • docker ステータスの表示: systemctl status docker
    • 起動: systemctl docker を有効にする
    • docker の一般情報を表示: docker info
    • docker のヘルプ ドキュメントを表示します: docker --help
    • docker コマンドの詳細なヘルプ ドキュメントを参照してください: docker command --help
  • ミラーコマンド
    • イメージのリスト: docker イメージ
      • リポジトリ: ミラー ウェアハウス ソース
      • TAG: イメージタグのバージョン番号、latest は最新バージョンを意味します
      • 画像ID: 画像ID
      • CREATED : イメージの作成時間
      • SIZE : 画像サイズ
      •   [root@localhost lingp]# docker images
          REPOSITORY               TAG       IMAGE ID       CREATED       SIZE
          chenlicn163/hello-word   latest    3ed90589c0b6   4 years ago   844kB
        
    • 検索ミラー: docker 検索ミラー
      • NAME : 画像名
      • 説明: ミラーの説明
      • スター: いいね!
      • OFFICIAL:正式に認定されているかどうか
      • AUTOMATED: 自動的に構築されるかどうか
      •   [root@localhost lingp]# docker search hello-word
          NAME                                    DESCRIPTION                   STARS     OFFICIAL   AUTOMATED
          alexstruk/hello-wordpress                                             0                    
          chenlicn163/hello-word                  hello-word                    0                    [OK]
          princechopra/hello-word                                               0                    
          vaibhavmehta/hello-word-node            hello-word-node               0                    
          lyvy/hello-word                         hello-word spring boot        0                    
          ilfaugno/hello-word                                                   0                    
          sjolicoeur/hello-word                                                 0                    
          abhayjava/hello-word                    The dummy short description   0                    
          txg5214/hello-word                      hello-word                    0                    
          sjolicoeur/hello-word2                                                0                    
          yueshide/hello-word                                                   0                    
          rahulnit/hello-word                     hello-word                    0                    
          szaier75/hello-word                     hello-word                    0                    
          etokarev/hello-word-python                                            0                    
          cpangam/hello-word                                                    0                    
          geekmc/hello-word                                                     0                    
          bc14f103c716/hello-word                                               0                    
          rghorpade80/hello-word-docker-valaxy4                                 0                    
          wattwatt/hello-word                                                   0                    
          luoyangc/hello-word                                                   0                    
          hubikz/hello-worda                                                    0                    
          mselender/hello-word                                                  0                    
          thitikornc/hello-word                                                 0                    
          never001/hello-word                                                   0                    
          manyyaks/hello-word                                                   0         
        
    • ミラーのプル: git pull [ミラー名: TAG]
      • TAG は書き込めません。TAG を書き込まずに最新のものがプルされます
      •   [root@localhost lingp]# docker pull chenlicn163/hello-word
          Using default tag: latest
          latest: Pulling from chenlicn163/hello-word
          19223ab0feef: Pull complete 
          Digest: sha256:2b7b800ab2ef8f0c2c3331ee170af82c3613b167d20e56d1884dca4772fee6c3
          Status: Downloaded newer image for chenlicn163/hello-word:latest
          docker.io/chenlicn163/hello-word:latest
          [root@localhost lingp]# docker images
          REPOSITORY               TAG       IMAGE ID       CREATED       SIZE
          chenlicn163/hello-word   latest    3ed90589c0b6   4 years ago   844kB
        
    • イメージが占有しているスペースを表示します: docker system df
    • イメージの削除: docker rmi [イメージ名: TAG または IMAGE ID]
    • すべてのイメージを削除します: docker rmi -f $(docker image -qa)
      • このコマンドだけは知っておいてください。ただし、気軽に使用しないでください
  • コンテナコマンド
    • 前述したように、イメージはクラスと比較され、コンテナはクラス オブジェクトです。したがって、最初にミラーが必要です。まず、ubuntu ミラーをプルします。
    •   [root@localhost lingp]# docker pull ubuntu
        Using default tag: latest
        latest: Pulling from library/ubuntu
        7b1a6ab2e44d: Pull complete 
        Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
        Status: Downloaded newer image for ubuntu:latest
        docker.io/library/ubuntu:latest
        [root@localhost lingp]# docker images
        REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
        ubuntu                   latest    ba6acccedd29   21 months ago   72.8MB
        chenlicn163/hello-word   latest    3ed90589c0b6   4 years ago     844kB
      
    • 新しい起動コンテナの作成: docker run [OPTIONS] イメージ名: TAG COMMAND
      • OPTIONS には次の値を指定できます。
        • --name : コンテナーの名前を指定します。
        • -d : バックグラウンドでコンテナを実行し、コンテナ ID を返します。つまり、デーモン コンテナを開始します。
        • -i : コンテナーを対話モードで実行します。通常は -t と一緒に使用します。
        • -t : コンテナの擬似入力ターミナルを再割り当てします。通常は -i とともに使用されます。
        • -P : ランダムなポートマッピング
        • -p : ポートマッピングを指定します
      •   [root@localhost lingp]# docker images
          REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
          ubuntu                   latest    ba6acccedd29   21 months ago   72.8MB
          chenlicn163/hello-word   latest    3ed90589c0b6   4 years ago     844kB
          [root@localhost lingp]# docker run -it --name=myubuntu ubuntu:latest /bin/bash
          root@1a139f4915df:/#
        
      • TAG は書き込めません。デフォルトは最新です。このコマンドは、イメージ ubuntu:latest を使用して対話モードでコンテナーを起動し、コンテナー内で /bin/bash コマンドを実行することを意味します。そして、このコンテナに myname という名前を付けます。名前を指定しない場合は、システムが自動的に名前を割り当てます。-d パラメータの機能は次のとおりです。-d を追加しない場合は、現在のコンテナ ターミナルを閉じると、コンテナは閉じられます。-d を追加すると、現在のコンテナ ターミナルを閉じると、コンテナは閉じられません、バックグラウンドで実行されます。
      • この時点ではubuntuミラーで開いたコンテナに入っており、バージョンが確認できます。この時点で、作成して起動したコンテナは実際の ubuntu システムとみなすことができます。
      •   root@1a139f4915df:/# cat /etc/issue
          Ubuntu 20.04.3 LTS \n \l
        
          root@1a139f4915df:/# 
        
    • すべてのコンテナをリストします: docker ps [オプション]
      • OPTIONS は次の値を取ることができます
        • -a : 現在実行中のすべてのコンテナと過去に実行されたコンテナをリストします。
        • -l : 最近作成されたコンテナを表示します
        • -n : 最後に作成された n 個のコンテナを表示します
        • -q : サイレントモード、コンテナ番号のみを表示します
        • --no-trunc : 情報表示を省略しないことを示します
      • 新しいターミナルを開いてコマンドを実行します。docker ps を直接実行して、起動済みのコンテナのみを表示します。
      •   [root@localhost lingp]# docker ps -a
          CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                      PORTS     NAMES
          1a139f4915df   ubuntu:latest   "/bin/bash"   6 minutes ago    Up 6 minutes                          myubuntu
          21c28993fefb   ubuntu:latest   "/bin/bash"   11 minutes ago   Exited (0) 7 minutes ago              infallible_dirac
          da45904d7f38   ubuntu          "/bin/bash"   24 minutes ago   Exited (0) 12 minutes ago             compassionate_thompson
          3e6cfc10ad0d   ubuntu          "/bin/bash"   29 minutes ago   Exited (0) 24 minutes ago             adoring_lalande
        
    • 出口コンテナ
      • まずはコンテナへ
      • exit : 終了後、コンテナは停止します
      • ctrl + p + q : 終了後、コンテナは停止しません
    • コンテナを開始します: docker start コンテナ ID またはコンテナ名
      •   [root@localhost lingp]# docker ps -a
          CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                       PORTS     NAMES
          1a139f4915df   ubuntu:latest   "/bin/bash"   18 minutes ago   Exited (127) 5 seconds ago             myubuntu
          21c28993fefb   ubuntu:latest   "/bin/bash"   24 minutes ago   Exited (0) 19 minutes ago              infallible_dirac
          da45904d7f38   ubuntu          "/bin/bash"   36 minutes ago   Exited (0) 24 minutes ago              compassionate_thompson
          3e6cfc10ad0d   ubuntu          "/bin/bash"   42 minutes ago   Exited (0) 36 minutes ago              adoring_lalande
          [root@localhost lingp]# docker start 1a139f4915df
          1a139f4915df
          [root@localhost lingp]# docker ps -a
          CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                      PORTS     NAMES
          1a139f4915df   ubuntu:latest   "/bin/bash"   19 minutes ago   Up 3 seconds                          myubuntu
          21c28993fefb   ubuntu:latest   "/bin/bash"   24 minutes ago   Exited (0) 20 minutes ago             infallible_dirac
          da45904d7f38   ubuntu          "/bin/bash"   36 minutes ago   Exited (0) 25 minutes ago             compassionate_thompson
          3e6cfc10ad0d   ubuntu          "/bin/bash"   42 minutes ago   Exited (0) 36 minutes ago             adoring_lalande
        
    • コンテナを再起動します: docker restart コンテナ ID またはコンテナ名
    • コンテナを停止します: docker stop コンテナ ID またはコンテナ名
    • コンテナの強制停止: docker kill コンテナ ID またはコンテナ名
    • 停止したコンテナを削除します: docker rm コンテナ ID またはコンテナ名
      •   [root@localhost lingp]# docker ps -a
          CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                      PORTS     NAMES
          1a139f4915df   ubuntu:latest   "/bin/bash"   21 minutes ago   Up 2 minutes                          myubuntu
          21c28993fefb   ubuntu:latest   "/bin/bash"   27 minutes ago   Exited (0) 22 minutes ago             infallible_dirac
          da45904d7f38   ubuntu          "/bin/bash"   39 minutes ago   Exited (0) 27 minutes ago             compassionate_thompson
          3e6cfc10ad0d   ubuntu          "/bin/bash"   45 minutes ago   Exited (0) 39 minutes ago             adoring_lalande
          [root@localhost lingp]# docker rm 3e6cfc10ad0d
          3e6cfc10ad0d
          [root@localhost lingp]# docker rm da45904d7f38
          da45904d7f38
          [root@localhost lingp]# docker ps -a
          CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                      PORTS     NAMES
          1a139f4915df   ubuntu:latest   "/bin/bash"   22 minutes ago   Up 3 minutes                          myubuntu
          21c28993fefb   ubuntu:latest   "/bin/bash"   27 minutes ago   Exited (0) 23 minutes ago             infallible_dirac
        
    • すべてのコンテナを強制削除: docker rm -f $(docker ps -a -q)
      • 慎重に使用してください
    • コンテナー ログの表示: docker ログ コンテナー ID
    • コンテナ内で実行されているプロセスを表示します: docker top コンテナ ID
    • コンテナーの内部詳細を表示します: docker insepct コンテナー ID
    • 起動したコンテナに入る
      • docker exec -it パブリック ID /bin/bash
        • コンテナ内で新しいターミナルを開き、新しいプロセスを開始できます。exit で終了してもコンテナは停止しません。
      • docker attach 容器ID
        • コンテナ開始コマンドのターミナルに直接移動します。新しいプロセスは開始されません。exit で終了するとコンテナが停止します。
      • 簡単に言えば、exec がコンテナに入った後、exit を実行して終了すると、コンテナは停止しません。コンテナに入るにはattach、終了するにはexitを実行するとコンテナは停止します。コンテナに入るには exec を使用することをお勧めします。
    • コンテナとホストの間でファイルをコピーする
      • コンテナーからホスト: docker cp コンテナー ID: コンテナーのホスト パス内のファイル パス
      • ホストからコンテナへ: docker cp ホスト ファイル パス コンテナ ID: コンテナ内のファイル パス
    • コンテナのインポ​​ートとエクスポート
      • コンテナーのエクスポート: docker エクスポート コンテナー ID > ./myubuntu.tar
      • インポートコンテナ: cat myubuntu.tar | docker import -image ユーザー/イメージ名: イメージのバージョン番号

環境を含むミラーを送信する

  • 記事冒頭の話に戻りますが、開発者のプログラムを運用保守担当者が使用する環境で実行するには、開発者の環境と整合性が取れている必要があります。使用環境はvim、gcc等のツールです。ただし、運用保守担当者のための環境がないため、開発者は開発環境全体をパッケージ化して提出できます。
  • 上記の紹介では、ubuntu イメージをプルし、コンテナーを起動しました。デフォルトでは、このコンテナには vim や gcc などのツールが入っていないので、このコンテナに vim と gcc をインストールした後、ミラーにパッケージ化して送信します。
  • 注文を送信
    • docker commit -m="コミット記述情報" -a="作成者" コンテナID 作成する対象イメージ名: [ラベル名]
    •   [root@localhost lingp]# docker images
        REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
        ubuntu                   latest    ba6acccedd29   21 months ago   72.8MB
        chenlicn163/hello-word   latest    3ed90589c0b6   4 years ago     844kB
        [root@localhost lingp]# docker ps -a
        CONTAINER ID   IMAGE           COMMAND       CREATED       STATUS                     PORTS     NAMES
        8f9846cbdfb2   ubuntu:latest   "/bin/bash"   2 hours ago   Up 15 minutes                        myubuntud
        8a9c1c2704eb   ubuntu:latest   "/bin/bash"   2 hours ago   Exited (129) 2 hours ago             myubuntu
        [root@localhost lingp]# docker commit -m="add vim and gcc" -a="graywolf" 8f9846cbdfb2 grayubuntu:1.0.0
        sha256:56df3dc1d8b1f94583bc7ab59b4f0b2f402dbaa2869dd558b1630ce763eeb7a6
        [root@localhost lingp]# docker images
        REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
        grayubuntu               1.0.0     56df3dc1d8b1   8 seconds ago   342MB
        ubuntu                   latest    ba6acccedd29   21 months ago   72.8MB
        chenlicn163/hello-word   latest    3ed90589c0b6   4 years ago     844kB
      
    • Ubuntu は元のイメージ、grayubuntu は vim と gcc をインストールした後のイメージです。比べてみると大きさが変わります。運用とメンテナンスがこの新しいイメージ grayubuntu を取得した後、コンテナーを起動した後、コンテナー内でプログラムを直接実行できます。

イメージを Alibaba Cloud に公開する

  • Alibaba Cloud に公開する
    • Alibaba Cloud 公式 Web サイトのコンテナ イメージ サービス セクションに移動します。
      ここに画像の説明を挿入
      ここに画像の説明を挿入
      ここに画像の説明を挿入
      ここに画像の説明を挿入
    • まず名前空間を作成します
      ここに画像の説明を挿入
      ここに画像の説明を挿入
    • ネームスペースの下にミラーリポジトリを作成します。
      ここに画像の説明を挿入
      ここに画像の説明を挿入
    • ローカルリポジトリを選択してください
      ここに画像の説明を挿入
    • ミラーウェアハウスが正常に作成されると、Alibaba Cloud はミラーをプルおよびプッシュする方法を教えてくれます。
      ここに画像の説明を挿入
    • ターミナルでコマンドを直接実行します
    • まずログインしてください
    •   [root@localhost lingp]# docker login --username=littleGrayWolf registry.cn-hangzhou.aliyuncs.com
        Password: 
        WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
        Configure a credential helper to remove this warning. See
        https://docs.docker.com/engine/reference/commandline/login/#credentials-store
        
        Login Succeeded
      
    • Alibaba Cloud Mirror Warehouse へのプッシュ
    •   [root@localhost lingp]# docker images
        REPOSITORY               TAG       IMAGE ID       CREATED          SIZE
        grayubuntu               1.0.0     56df3dc1d8b1   31 minutes ago   342MB
        ubuntu                   latest    ba6acccedd29   21 months ago    72.8MB
        chenlicn163/hello-word   latest    3ed90589c0b6   4 years ago      844kB
        [root@localhost lingp]# docker tag 56df3dc1d8b1 registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0:1.0.0
        [root@localhost lingp]# docker push registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0:1.0.0
        The push refers to repository [registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0]
        2d9e91b2c941: Pushed 
        9f54eef41275: Pushed 
        1.0.0: digest: sha256:1dd42bfd2491b694c6d0fa5971c066d37192135d212b42faa6fb961e139e6849 size: 742
      
    • 現時点では、Alibaba Cloud 上に当社の鏡像が存在します。
      ここに画像の説明を挿入
    • これをテストできます。まずローカル イメージを削除してから、Alibaba Cloud から再度プルします。
    •   [root@localhost lingp]# docker images
        REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
        ubuntu                   latest    ba6acccedd29   21 months ago   72.8MB
        chenlicn163/hello-word   latest    3ed90589c0b6   4 years ago     844kB
        [root@localhost lingp]# docker pull registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0:1.0.0
        1.0.0: Pulling from littlegraywolf/ubuntu1.0
        7b1a6ab2e44d: Already exists 
        d2cb84f992fd: Pull complete 
        Digest: sha256:1dd42bfd2491b694c6d0fa5971c066d37192135d212b42faa6fb961e139e6849
        Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0:1.0.0
        registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0:1.0.0
        [root@localhost lingp]# docker images
        REPOSITORY                                                   TAG       IMAGE ID       CREATED          SIZE
        registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0   1.0.0     56df3dc1d8b1   41 minutes ago   342MB
        ubuntu                                                       latest    ba6acccedd29   21 months ago    72.8MB
        chenlicn163/hello-word                                       latest    3ed90589c0b6   4 years ago      844kB
      
    • ここでのテストでは、無料で使用できる個人版のサービスを使用します。企業で使用する場合は、Enterprise Edition の料金を支払うことができます。

イメージをプライベート リポジトリに公開する

  • 結局のところ、Alibaba Cloud はサードパーティ企業であり、自分の会社のものを Alibaba Cloud に置くほど安全ではありません。したがって、一般的に、企業は社内に社内担当者が使用するための専用のミラー倉庫を構築します。

  • プライベートミラー倉庫を構築する

  • ミラー Docker レジストリをダウンロードします: docker pull レジストリ

    •   [root@localhost lingp]# docker pull registry
        Using default tag: latest
        latest: Pulling from library/registry
        79e9f2f55bf5: Pull complete 
        0d96da54f60b: Pull complete 
        5b27040df4a2: Pull complete 
        e2ead8259a04: Pull complete 
        3790aef225b9: Pull complete 
        Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
        Status: Downloaded newer image for registry:latest
        docker.io/library/registry:latest
        [root@localhost lingp]# docker images
        REPOSITORY                                                   TAG       IMAGE ID       CREATED          SIZE
        registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0   1.0.0     56df3dc1d8b1   56 minutes ago   342MB
        registry                                                     latest    b8604a3fe854   20 months ago    26.2MB
        ubuntu                                                       latest    ba6acccedd29   21 months ago    72.8MB
        chenlicn163/hello-word                                       latest    3ed90589c0b6   4 years ago      844kB
      
  • プライベート ライブラリ ミラー レジストリを実行する

    •   [root@localhost lingp]# docker run -d -p 5000:5000 --privileged=true registry
        ccbe13e502cd4e9f85d08086aebbe0c5a4afff7eefc730209ac6f5004580fa60
        [root@localhost lingp]# docker ps
        CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                       NAMES
        ccbe13e502cd   registry   "/entrypoint.sh /etc…"   7 seconds ago   Up 6 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   condescending_sammet
      
  • プライベートリポジトリのミラーを表示する

    •   [root@localhost lingp]# curl -XGET http://192.168.206.136:5000/v2/_catalog
        {
              
              "repositories":[]}
      
  • タグを変更する

    • プライベートウェアハウスの仕様に準拠するようにタグを変更します。
    • docker タグのイメージ名: TAG ip:ポート/イメージ名: TAG
    •   [root@localhost lingp]# docker images
        REPOSITORY                                                   TAG       IMAGE ID       CREATED          SIZE
        grayubuntu2                                                  2.0.0     bcc9dba161d0   52 minutes ago   185MB
        registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0   1.0.0     56df3dc1d8b1   2 hours ago      342MB
        registry                                                     latest    b8604a3fe854   20 months ago    26.2MB
        ubuntu                                                       latest    ba6acccedd29   21 months ago    72.8MB
        chenlicn163/hello-word                                       latest    3ed90589c0b6   4 years ago      844kB
        [root@localhost lingp]# docker tag grayubuntu2:2.0.0 192.168.206.136:5000/grayubuntu2:2.0.0
        [root@localhost lingp]# docker images
        REPOSITORY                                                   TAG       IMAGE ID       CREATED          SIZE
        192.168.206.136:5000/grayubuntu2                             2.0.0     bcc9dba161d0   52 minutes ago   185MB
        grayubuntu2                                                  2.0.0     bcc9dba161d0   52 minutes ago   185MB
        registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0   1.0.0     56df3dc1d8b1   2 hours ago      342MB
        registry                                                     latest    b8604a3fe854   20 months ago    26.2MB
        ubuntu                                                       latest    ba6acccedd29   21 months ago    72.8MB
        chenlicn163/hello-word                                       latest    3ed90589c0b6   4 years ago      844kB
      
      
  • http をサポートするように構成を変更します。

    • HTTP プッシュはデフォルトではサポートされていません。サポートするように構成を変更できます。
    • vim /etc/docker/daemon.json
    •   {
              
              
        	  "registry-mirrors": ["https://ssfzdz4k.mirror.aliyuncs.com"],
        	  "insecure-registries":["192.168.206.136:5000"]
        }
      
    • 変更後にdockerを再起動する
    •   systemctl restart docker
      
    • プライベートサーバーウェアハウスを開始する
    •   docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry --privileged=true registry
      
  • ローカルイメージをプライベートウェアハウスにプッシュします

    • docker プッシュイメージ名: TAG
    •   [root@localhost lingp]# docker push 192.168.206.136:5000/grayubuntu2:2.0.0
        The push refers to repository [192.168.206.136:5000/grayubuntu2]
        07c695add28a: Pushed 
        9f54eef41275: Pushed 
        2.0.0: digest: sha256:39ace23746821bff7798f32bbce0544789019485c231ea08aca15384cc0afe68 size: 741
        [root@localhost lingp]# curl -XGET http://192.168.206.136:5000/v2/_catalog
        {
              
              "repositories":["grayubuntu2"]}
      
  • プライベートウェアハウスイメージをローカルにプルします

    • docker pull イメージ名: TAG
    •   [root@localhost lingp]# docker images
        REPOSITORY                                                   TAG       IMAGE ID       CREATED         SIZE
        registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0   1.0.0     56df3dc1d8b1   2 hours ago     342MB
        registry                                                     latest    b8604a3fe854   20 months ago   26.2MB
        ubuntu                                                       latest    ba6acccedd29   21 months ago   72.8MB
        chenlicn163/hello-word                                       latest    3ed90589c0b6   4 years ago     844kB
        [root@localhost lingp]# git pull 192.168.206.136:5000/grayubuntu2:2.0.0
        bash: git: command not found...
        [root@localhost lingp]# docker pull 192.168.206.136:5000/grayubuntu2:2.0.0
        2.0.0: Pulling from grayubuntu2
        7b1a6ab2e44d: Already exists 
        0cdd9d7ee9f3: Pull complete 
        Digest: sha256:39ace23746821bff7798f32bbce0544789019485c231ea08aca15384cc0afe68
        Status: Downloaded newer image for 192.168.206.136:5000/grayubuntu2:2.0.0
        192.168.206.136:5000/grayubuntu2:2.0.0
        [root@localhost lingp]# docker images
        REPOSITORY                                                   TAG       IMAGE ID       CREATED             SIZE
        192.168.206.136:5000/grayubuntu2                             2.0.0     bcc9dba161d0   About an hour ago   185MB
        registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0   1.0.0     56df3dc1d8b1   2 hours ago         342MB
        registry                                                     latest    b8604a3fe854   20 months ago       26.2MB
        ubuntu                                                       latest    ba6acccedd29   21 months ago       72.8MB
        chenlicn163/hello-word                                       latest    3ed90589c0b6   4 years ago         844kB
      
    • この時点で、運用と保守は、開発によってプライベート ライブラリにアップロードされたイメージをプルし、プログラムを他のマシンで実行できます。

おすすめ

転載: blog.csdn.net/new9232/article/details/131860751