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)
- このコマンドだけは知っておいてください。ただし、気軽に使用しないでください
- イメージのリスト: docker イメージ
- コンテナコマンド
- 前述したように、イメージはクラスと比較され、コンテナはクラス オブジェクトです。したがって、最初にミラーが必要です。まず、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:/#
- OPTIONS には次の値を指定できます。
- すべてのコンテナをリストします: 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
- OPTIONS は次の値を取ることができます
- 出口コンテナ
- まずはコンテナへ
- 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 exec -it パブリック ID /bin/bash
- コンテナとホストの間でファイルをコピーする
- コンテナーからホスト: 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 公式 Web サイトのコンテナ イメージ サービス セクションに移動します。
イメージをプライベート リポジトリに公開する
-
結局のところ、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
- この時点で、運用と保守は、開発によってプライベート ライブラリにアップロードされたイメージをプルし、プログラムを他のマシンで実行できます。