プライベートウェアハウス(レジストリとハーバー)を構築するためのDockerの実装

プライベートウェアハウス(レジストリとハーバー)を構築するためのDockerの実装

使用される Docker イメージが増えるにつれて、イメージを保存する場所、つまりウェアハウスが必要になります。現在、一般的に使用されている倉庫には、公営倉庫と民間倉庫の 2 種類があります。最も便利な方法は、パブリック リポジトリを使用してアップロードおよびダウンロードすることです。パブリック リポジトリからイメージをダウンロードする際には登録する必要はありませんが、アップロードする際には登録が必要です。

最も一般的に使用されるプライベート倉庫はレジストリとハーバーです。以下ではプライベート倉庫の作成方法について詳しく説明します。

1. レジストリプライベートウェアハウスを構築する

1) ケースの説明

2 つの Docker サーバー、dockerA はレジストリ プライベート ウェアハウスを作成し、dockerB はテストに使用されます。

2) 事例

(1)DockerAサーバーの運用

[root@dockerA ~]# docker pull registry:2 //registry:2 のイメージをダウンロードします [root@dockerA ~]# docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2
// レジストリ サービスを実行するためのレジストリ コンテナーを作成します。
//-p: ポート マッピング (前面はホスト ポート、背面はコンテナーによって公開されるポート)。
//-v: マウントディレクトリ(最初のディレクトリはホストディレクトリ、2 番目のディレクトリはコンテナディレクトリ)を指定して、ホストディレクトリを自動的に作成します。
//--restart=always: docker サービスの起動から開始します。
[root@dockerA ~]# docker ps //コンテナが実行中であることを確認します コンテナID イメージ コマンド 作成日時 ステータス ポート 名前
f98bf93f100e レジストリ:2 "/entrypoint.sh /etc…" 3 分前 3 分前にアップ 0.0.0.0:5000->5000/tcp レジストリ
[root@dockerA ~]# netstat -anpt | grep 5000 // ポート 5000 が listen されていることを確認します tcp6 0 0 :::5000 :::* LISTEN 2370/docker-proxy  
[root@dockerA ~]# docker tag centos:7 192.168.1.1:5000/centos:7
// プライベート ウェアハウス名の仕様に準拠するようにイメージ名を変更します。注: プライベート ウェアハウス イメージの命名規則は次のとおりです: 192.168.20.7:5000/XXX (ホスト マシン IP: 5000 ポート/イメージ名)
[root@dockerA ~]# vim /usr/lib/systemd/system/docker.service 
//docker サービスのメイン設定ファイルを書き込む 13 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1:5000
// 元の設定ファイルを変更して、安全でないレジストリ (--insecure-registry) を追加します。アドレスはホストの IP アドレスとポート 5000 です [root@dockerA ~]# systemctl daemon-reload 
[root@dockerA ~]# systemctl restart docker //docker サービスを再起動します [root@dockerA ~]# docker push 192.168.1.1:5000/centos:7
//名前を変更したイメージをレジストリのプライベート ウェアハウスにアップロードします [root@dockerA ~]# curl 192.168.1.1:5000/v2/_catalog //プライベート ウェアハウス内のイメージを表示します {"repositories":["centos"]}
[root@dockerA ~]# curl 192.168.1.1:5000/v2/centos/tags/list //イメージの詳細情報を表示します {"name":"centos","tags":["7"]}

(2)DockerBサーバーの運用

[root@dockerB ~]# vim /usr/lib/systemd/system/docker.service 
//docker 13 のメイン設定ファイルを変更する ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1:5000
// レジストリと一致するコンテンツを追加し、レジストリプライベートウェアハウスサーバーの IP アドレスとポートを指定します [root@dockerB ~]# systemctl daemon-reload 
[root@dockerB ~]# systemctl restart docker //docker サービスを再起動します [root@dockerB ~]# curl 192.168.1.1:5000/v2/_catalog //プライベート ウェアハウス内のイメージを表示します {"repositories":["centos"]}
[root@dockerB ~]# curl 192.168.1.1:5000/v2/centos/tags/list //プライベートウェアハウス内のイメージを表示します {"name":"centos","tags":["7"]}
[root@dockerB ~]# docker pull 192.168.1.1:5000/centos:7
//プライベートリポジトリのイメージをダウンロードします [root@dockerB ~]# docker images //イメージがローカルリポジトリにダウンロードされたことを確認します TAG IMAGE ID CREATED SIZE
192.168.1.1:5000/centos 7 5e35e3505 週間前に追加 203MB

この時点で、レジストリ専用倉庫が構築されました!

2. ハーバーのプライベート倉庫を建設する

Registry プライベート ウェアハウスと比較すると、Harbor プライベート ウェアハウスははるかに強力で、Web グラフィカル管理をサポートしているため、企業で非常に人気があります。

1) ケースの説明

2 つの Docker サーバー、dockerA は Harbor プライベート ウェアハウスを作成し、dockerB はテストに使用されます。

2) 事例

(1)docker-composeツールをダウンロードする

まず、図に示すように、GitHub の公式 Web サイトにアクセスします。





DockerAサーバーの運用

[root@dockerA ~]# yum -y yum-utils デバイスマッパー永続データ lvm2 をインストールします
//docker-compose ツールに必要な依存関係をダウンロードします (docker 環境をデプロイするときにインストールできます)
[root@dockerA ~]# curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
//docker-compose ツールをダウンロードします [root@dockerA ~]# chmod +x /usr/local/bin/docker-compose
[root@dockerA ~]# docker-compose -v      
docker-compose バージョン 1.25.0、ビルド 0a186604
//docker-compose ツールのバージョン情報をチェックして、正常にインストールされていることを確認します

(2)港湾の構成

GitHub の公式サイトで検索して、対応するバージョンを見つけることもできます。ここではこれ以上のスクリーンショットは撮りません! URLはhttps://github.com/goharbor/harbor/releasesです。
図に示すように:

同じ操作がdockerAサーバーでも実行されます

[root@dockerA ~]# wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.1.tgz
// harbor ソフトウェア パッケージをダウンロード [root@dockerA ~]# tar zxf harbor-offline-installer-v1.9.1.tgz -C /usr/local
[root@dockerA ~]# cd /usr/local/harbor/
[root@dockerA harbor]# vim harbor.yml 
//設定ファイルを書き込みます。他のバージョンはデフォルトで cfg で終わりますが、このバージョンは yml で終わります。ファイルの内容は同じです。hostname: 192.168.1.1 //ローカル IP アドレスに変更します harbor_admin_password: Harbor12345    
//この行はすでに存在します。自分で入力する必要はありません。ユーザー名とパスワードを覚えておいてください。必要に応じて変更できます[root@dockerA harbor]# ./install.sh //インストール スクリプトを実行します[root@dockerA harbor]# vim /usr/lib/systemd/system/docker.service 
//dockerメイン設定ファイルを書き込む 13 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1
//レジストリと同様に、ポート番号は harbor 構成ファイルには入力されていないため、ここで追加できます。そうしないと、エラーが発生する可能性があります [root@dockerA harbor]# systemctl daemon-reload 
[root@dockerA harbor]# systemctl restart docker //docker サービスを再起動します [root@dockerA harbor]# pwd
/usr/local/harbor //ディレクトリに注意してください。このディレクトリ内にある必要があります [root@dockerA harbor]# docker-compose start
//docker-compose ツールを使用してすべてのコンテナを起動します (docker を再起動するとすべてのコンテナが閉じられるため)
[root@dockerA harbor]# netstat -anpt | grep 80 //ポート80がtcp 0 0 172.18.0.1:33780 172.18.0.5:10514 ESTABLISHED 70076/docker-proxyでリッスンしていることを確認します 
tcp6 0 0 :::80 :::* 72870/docker-proxyを聴く

クライアントは次の Web ページにアクセスします。




(3)画像をアップロードする

倉庫が構築できたら、dockerA(harbor)サーバーにイメージをアップロードしてください。

[root@dockerA ~]# dockerログイン -u admin -p Harbor12345 192.168.1.1
// ログインするには、ユーザー名、パスワード、ハーバー サーバー アドレスを指定します。警告! CLI 経由で --password を使用することは安全ではありません。--password-stdin を使用してください。
警告! パスワードは暗号化されずに /root/.docker/config.json に保存されます。
この警告を削除するには、資格情報ヘルパーを構成します。
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

ログイン成功 //ログイン成功[root@dockerA ~]# docker tag centos:7 192.168.1.1/test/centos:7
// イメージ名を変更する必要があります。test は先ほど作成したウェアハウスの名前です [root@dockerA ~]# docker push 192.168.1.1/test/centos:7
// ハーバーサーバーのテストリポジトリにイメージをアップロードします

アップロードが完了すると、図のようになります。

(4)ダウンロードしたイメージをdockerBサーバーでテストする

[root@dockerB ~]# vim /usr/lib/systemd/system/docker.service 
//docker 13 のメイン設定ファイルを書き込みます ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1
//ハーバーサーバーのIPアドレスを指定 [root@dockerB ~]# systemctl daemon-reload 
[root@dockerB ~]# systemctl restart docker //docker サービスを再起動します [root@dockerB ~]# docker login -u admin -p Harbor12345 192.168.1.1
// ハーバー サーバーにログインします。警告! CLI 経由で --password を使用することは安全ではありません。--password-stdin を使用してください。
警告! パスワードは暗号化されずに /root/.docker/config.json に保存されます。
この警告を削除するには、資格情報ヘルパーを構成します。
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

ログイン成功 //ログイン成功[root@dockerB ~]# docker pull 192.168.1.1/test/centos:7
//テスト用のイメージをダウンロード [root@dockerB ~]# docker images //イメージがダウンロードされたことを確認する リポジトリ タグ イメージ ID 作成 サイズ
192.168.1.1/test/centos 7 5e35e350 5 週間前に追加 203MB

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ミラーリポジトリである Harbor の設定と使用に関するチュートリアル
  • HarborをベースにしたDockerプライベートイメージリポジトリの構築の詳細な説明
  • Dockerプライベート倉庫Harborの導入と展開方法
  • Dockerがプライベート倉庫Harborを構築する手順
  • ドッカー専用倉庫港湾建設プロセス
  • Harbor がプライベート画像ウェアハウス環境とサービス展開例を視覚化

<<:  JavaScript と JQuery フレームワークの基本チュートリアル

>>:  MySQL インデックスの効率的な使用ガイド

推薦する

Docker で複数のアプリケーション サイトをプロキシするために Nginx を使用する方法

序文エージェントの役割は何ですか? - 複数のドメイン名が同じサーバーに解決される- 1つのサーバー...

CSSレコードテキストアイコン配置のいくつかのソリューション

開発中に画像とテキストが 1 行に表示されることはよくあります。2 つのインライン要素を揃えるのは通...

JavaScript ベースのシンプルな計算機の実装

この記事では、参考までに、簡単な計算機を実装するためのJavaScriptの具体的なコードを紹介しま...

HTML リスト ボックス、テキスト フィールド、ファイル フィールドのサンプル コード

ドロップダウンボックス、テキストフィールド、ファイルフィールド 上半分はデモンストレーション効果、下...

Jsモジュール化の動作原理とソリューションの詳細な説明

目次1. モジュラーコンセプト2. モジュール化3. モジュール化プロセス1. 通常の記述(グローバ...

Xtrabackup を使用した MySQL バックアップ プロセスの詳細な説明

目次01 背景02 はじめに03 ワークフロー04 いくつかの質問05 ファイルをバックアップする0...

Vue 仮想リストの実例

目次序文デザイン成し遂げるまとめ序文最近は、いつも延々とスワイプしています。 Weibo をチェック...

Linux でテキストから改行文字を削除する方法

復帰文字 ( Ctrl+M ) に不安を感じても心配しないでください。それらを排除する簡単な方法がい...

Linux で指定された期間に数分ごとにタスク スケジュール crontab を自動的に実行する方法

まずコードを見てみましょう #/bin/sh datename=$(日付 +%Y%m%d-%H%M%...

Linux sshのデフォルトのリモートポート番号を変更する6つの手順

Linux のデフォルトの ssh リモート ポートは 22 です。デフォルトのポートは、悪意のある...

Reactは無限ループスクロール情報を実装する

この記事では、無限ループスクロールを実現するためのReactの具体的なコードを参考までに紹介します。...

vue3 学習ノートにおける axios の使用の変更の概要

目次1. axioの基本的な使い方2. クロスドメインの問題を解決するには? 3. パッケージ4. ...

MySQL 5.7 の Docker バージョンを MySQL 8.0.13 にアップグレードし、データを移行する

目次1. 古いMySQL5.7データをバックアップする2. MySQL8.0.13のイメージをプルし...

VMware Workstation のインストール Linux システム

始める段階から初心者になるまで、Linux オペレーティング システムは不可欠です。最初のステップは...

DockerはCMDまたはENTRYPOINTコマンドを使用して複数のサービスを同時に起動します

要件: Celery は Django に導入されています。Django プロジェクトを開始するとき...