Dockerプライベートウェアハウスレジストリの導入

Dockerプライベートウェアハウスレジストリの導入

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

最もよく使われるプライベート倉庫は、レジストリとハーバーです。次に、レジストリプライベート倉庫の構築方法を詳しく紹介します。ハーバーは次のブログ投稿で展開する予定です。

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

ケースの説明

2 台の CentOS7.4 マシン。1 台は Docker プライベート リポジトリ用、もう 1 台はテスト用の Docker クライアント用です。

両方のサーバーにDockerサービスをインストールする必要があります。ブログ投稿を参照してください: Docker.v19バージョンのインストール

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

[root@centos01 ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf  
    <!--docker ホストでルーティング機能を有効にする-->
[root@centos01 ~]# sysctl -p <!--設定を更新-->
ネット.ipv4.ip_forward = 1
[root@centos01 ~]# vim /etc/docker/daemon.json <!--イメージアクセラレーションを設定する-->
{"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]} <!--Alibaba Cloud Acceleration を追加-->
[root@centos01 ~]# systemctl reload docker <!--docker サービスを再起動します-->
[root@centos01 ~]# docker search registry <!--レジストリイメージを検索-->
<!--レジストリ イメージは、状況に応じて直接プルダウンすることも、ダウンロードしないこともできます-->
[root@centos01 ~]# docker run -d -p 5000:5000 --name registry --restart=always -v /opt/registry:/var/lib/registry レジストリ
 <!-- レジストリ コンテナーを実行し、レジストリ サービスを実行して独自のイメージを保存します -->
 <!--"--restart=always" パラメータは、このコンテナが docker サービスの起動後に起動することを意味します -->
[root@centos01 ~]# docker ps <!--docker で実行中のコンテナを表示します-->
コンテナID イメージ コマンド 作成ステータス ポート名
a7773d77b8a3 レジストリ "/entrypoint.sh /etc…" 50 秒前 46 秒前にアップ 0.0.0.0:5000->5000/tcp レジストリ
[root@centos01 ~]# docker イメージ <!--すべての docker イメージを表示-->
リポジトリ タグ イメージ ID 作成 サイズ
レジストリ最新 708bc6af7e5e 3か月前 25.8MB
tomcat 最新 1b6b1fe7261e 5日前 647MB
hub.c.163.com/public/centos 6.7-tools b2ab0ed558bb 3年前 602MB
[root@centos01 ~]# vim /etc/docker/daemon.json <!--レジストリ サービスをサポートするように docker サービスを構成する-->
{"レジストリミラー":["https://6kx4zyno.mirror.aliyuncs.com"],
"insecure-registries":["192.168.100.10:5000"] <!--この行を追加-->
}
[root@centos01 ~]# systemctl reload docker <!--docker サービスを再起動します-->

2. レジストリプライベートウェアハウスに画像をアップロードする

[root@centos01 ~]# docker タグ hub.c.163.com/public/centos:6.7-tools 192.168.100.10:5000/image/centos:6.7  
    <!--画像タグを変更する-->
[root@centos01 ~]# docker push 192.168.100.10:5000/image/centos:6.7 <!-- イメージをレジストリのプライベート ウェアハウスにアップロードします -->

2. プライベートリポジトリにアクセスできるようにDockerクライアントを構成する

<!-- クライアントに Docker サービスをインストールし、イメージ アクセラレーションを構成する -->
[root@centos02 ~]# vim /etc/docker/daemon.json <!--レジストリ サービスをサポートするように docker を構成する-->
{"レジストリミラー":["https://6kx4zyno.mirror.aliyuncs.com"],
"insecure-registries":["192.168.100.10:5000"] <!--この行を追加-->
}
[root@centos02 ~]# systemctl restart docker <!--docker サービスを再起動します-->
[root@centos02 ~]# docker pull 192.168.100.10:5000/image/centos:6.7 
         <!--クライアントはプライベートウェアハウス内のイメージをダウンロードします-->
[root@centos02 ~]# docker images <!--イメージが正常にダウンロードされたかどうかを確認します-->
リポジトリ タグ イメージ ID 作成 サイズ
192.168.100.10:5000/image/centos 6.7 b2ab0ed558bb 3年前 602MB

この時点で、レジストリのプライベート ウェアハウスは構築されましたが、現在問題が発生しています。これも展開されると、企業内のすべての担当者がプライベート ウェアハウスにアクセスできるようになります。セキュリティ上の理由から、レジストリに認証を追加します。認証に合格した後でのみ、プライベート ウェアハウスのイメージをアップロードまたはダウンロードできます。

3. 認証をロードするようにレジストリを構成する

[root@centos01 ~]# yum -y install httpd-tools <!--暗号化ツール httpd-tools をインストールします-->
[root@centos01 ~]# mkdir /opt/registry-auth <!--検証キーを保存するディレクトリを作成します-->
[root@centos01 ~]# htpasswd -Bbn bob pwd@123 > /opt/registry-auth/htpasswd
 <!--レジストリ認証データベースを構成する-->
<!--"-Bbn" パラメータの説明: B はパスワードの暗号化を強制します。b はコマンドにパスワードを入力し、パスワードの入力を求めません。n はキー ファイルを更新しません -->

<!--このサーバー上のすべてのコンテナを削除し、認証を必要とするプライベート ウェアハウス コンテナを再生成します-->
[root@centos01 ~]# docker run -d -p 5000:5000 --restart=always \
-v /opt/レジストリ認証/:/auth/ \
-v /opt/registry:/var/lib/registry --name レジストリ認証 -e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=レジストリ領域" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" レジストリ 
 <!--認証をサポートするレジストリ プライベート イメージ リポジトリ コンテナーを再実行します-->
[root@centos01 ~]# docker tag tomcat:latest 192.168.100.10:5000/image/tomcat:1.0 
    <!--ミラー変更タグ-->
[root@centos01 ~]# docker push 192.168.100.10:5000/image/tomcat:1.0 
<!-- アイデンティティ認証なしでプライベートリポジトリにイメージをアップロードできるかどうかをテストします -->
基本認証資格情報なし
<!--本人確認がないためアップロードできないというメッセージが表示されます-->
[root@centos01 ~]# dockerログイン 192.168.100.10:5000 
    <!--プライベートイメージリポジトリにログインし、本人認証に合格した後にアップロードします-->
ユーザー名: bob <!--bob を入力-->
パスワード: <!--パスワードを入力-->
……………… <!--一部省略-->
ログインに成功しました <!--認証に合格しました。これでプライベート倉庫に画像をアップロードできます-->
[root@centos01 ~]# docker push 192.168.100.10:5000/image/tomcat:1.0 <!-- イメージをプライベートウェアハウスに再度アップロードします -->
プッシュはリポジトリ [192.168.100.10:5000/image/tomcat] を参照します。
b0ac242ce8d3: プッシュ
5e71d8e4cd3d: 押された
eb4497d7dab7: プッシュ
bfbfe00b44fc: プッシュ
d39111fb2602: プッシュ
155d997ed77c: プッシュ
88cfc2fcd059: プッシュ
760e8d95cf58: プッシュ
7cc1c2d7e744: プッシュ
8c02234b8605: プッシュ
1.0: ダイジェスト: sha256:55b41e0290d32d6888aee2e9a15f03cc88d2f49d5ad68892c54b9527d0ed181c サイズ: 2421
[root@centos02 ~]# docker pull 192.168.100.10:5000/image/tomcat:1.0 
 <!--認証なしでプライベートリポジトリからイメージをダウンロードすると、Docker クライアントは直接拒否されます-->
デーモンからのエラー応答: http://192.168.100.10:5000/v2/image/tomcat/manifests/1.0 を取得: 基本認証資格情報がありません
[root@centos02 ~]# dockerログイン 192.168.100.10:5000 
    <!--プライベート倉庫にログインし、本人認証に合格します-->
ユーザー名: bob <!--bob を入力-->
パスワード: <!--パスワードを入力-->
ログインに成功しました <!--認証に合格しました-->
[root@centos02 ~]# docker pull 192.168.100.10:5000/image/tomcat:1.0 <!--プライベートウェアハウス内のイメージをダウンロード-->
1.0: image/tomcat からプル
376057ac6fa1: プル完了
5a63a0a859d8: プル完了
496548a8c952: プル完了
2adae3950d4d: プル完了
0a297eafb9ac: プル完了
09a4142c5c9d: プル完了
9e78d9befa39: プル完了
18f492f90b9c: プル完了
7834493ec6cd: プル完了
216b2be21722: プル完了
ダイジェスト: sha256:55b41e0290d32d6888aee2e9a15f03cc88d2f49d5ad68892c54b9527d0ed181c
ステータス: 192.168.100.10:5000/image/tomcat:1.0 の新しいイメージをダウンロードしました
192.168.100.10:5000/イメージ/tomcat:1.0
[root@centos02 ~]# docker イメージ <!--docker クライアント イメージを表示-->
リポジトリ タグ イメージ ID 作成 サイズ
192.168.100.10:5000/image/tomcat 1.0 1b6b1fe7261e 5日前 647MB
192.168.100.10:5000/image/centos 6.7 b2ab0ed558bb 3年前 602MB

Docker プライベート ウェアハウス レジストリの導入実装に関する記事はこれで終了です。Docker プライベート ウェアハウス レジストリに関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerレジストリプライベートウェアハウスの構築プロセス
  • プライベートイメージウェアハウスを構築するためのDockerレジストリの実装方法
  • Docker はプライベート ウェアハウス (レジストリ、ハーバー) を構築します
  • Dockerプライベートウェアハウスレジストリの構築と検証の詳細説明
  • Dockerレジストリイメージを使用してプライベートリポジトリを作成する方法
  • Dockerレジストリイメージの削除とガベージコレクションの詳細な説明
  • Dockerレジストリプライベートイメージウェアハウスサービス導入事例デモ

<<:  MySQL のユーザー権限を照会する方法の概要

>>:  MySQL トランザクション分離レベルの表示と変更の例

推薦する

Mysql マスタースレーブ サービスの実装例を構成する

Mysql マスタースレーブ サービスの実装例を構成する### メインデータベースmy.cnfを構成...

MySQL の undo、redo、binlog の違いを簡単に分析します

目次序文【ログ取り消し】 【REDOログ】 【バイナリログ】要約する序文MySQL には、REDO ...

jQueryはhide()とtoggle()関数を使用してカメラブランド表示の非表示機能を実現します。

最近、jQuery を学習しているときに、show()、hide()、toggle() 関数に出会い...

Vue は動的なプログレスバー効果を実現します

この記事では、動的なプログレスバー効果を実現するためのVueの具体的なコードを例として紹介します。具...

Vue ルーティングフォールバックに最適なソリューション (vue-route-manager)

目次ルーティングマネージャー背景はじめる問題を解決する方法要約するルーティングマネージャー各ジャンプ...

Linux マルチスレッドにおけるフォークとミューテックス ロック プロセスの例

目次質問: 1. 最初の試み2. 合理的な分析3. 問題解決(1) pthread_join()の使...

Linuxのファイル権限の詳細な紹介

Linux の優れた点は、マルチユーザー、マルチタスク システムにあります。 Linux では通常、...

よく使われるLinuxコマンド「ll」が無効、またはコマンドが見つからないという問題を解決します

質問:よく使用されるコマンド「ll」が無効であるか、コマンドが見つかりません理由: 「ll」コマンド...

SCSS スタイルのコードを 50% 削減する 14 の実践的な経験

序文Sass は CSS3 言語の拡張機能です。Sass を使用すると、より良いスタイルシートをより...

JS の querySelector メソッドと getElementById メソッドの違い

目次1. 概要1.1 querySelector() と querySelectorAll() の使...

Ubuntu 18.04 に VMware Tools をインストールする際のエラーを解決する

1. オンライン チュートリアルによると、Ubuntu 18.04 のインストールはまだ失敗します。...

ウェブサイト制作におけるオンライン広告の新しいインタラクティブ体験(グラフィックチュートリアル)

インターネット時代が成熟するにつれて、オンライン広告の発展も加速しています。圧倒的な広告収入と完璧な...

jQueryブリージングカルーセルの制作原理を詳しく解説

この記事では、jQueryブリージングカルーセル制作原理の具体的なプロセスを参考までに紹介します。具...

MySQL データ挿入効率の比較

データを挿入するとき、以前オフィス システムに取り組んでいたときにはデータベースのパフォーマンスにつ...

MySQL の同時実行性の問題と解決策の分析

目次1. 背景2. テーブルロックによるクエリの遅延3. オンラインでテーブル構造を変更するとどのよ...