Docker で Harbor パブリック リポジトリを構築する方法の例

Docker で Harbor パブリック リポジトリを構築する方法の例

前回のブログ投稿では、レジストリのプライベート ウェアハウスについて説明しました。今日は、Harbor ウェアハウスを設定してみましょう。Harbor は、パブリック ウェアハウスとしてもプライベート ウェアハウスとしても使用できます。今日は、Harbor がパブリック ウェアハウスとプライベート ウェアハウスを実装する方法を設定してみましょう。

レジストリパブリックリポジトリの詳細については、ブログ記事「Dockerプライベートリポジトリのデプロイレジストリ」をご覧ください。

レジストリとハーバーの違い

  • レジストリ: グラフィカル サポートが貧弱なプライベート イメージ リポジトリであり、小規模企業で使用されます。
  • Harbor: ビジュアル管理、プライベートおよびパブリック リポジトリ、イメージの管理と制御をサポートします。

Docker Harborの利点

  • VMWare のオープン ソース イメージ管理ソリューション。
  • グラフィカル管理をサポートします。
  • 簡単なアクセスと構成。
  • 画像アクセス制御を容易にします。
  • 責任戦略のミラーリングをサポートします。
  • ユーザー アクセス イメージの使用状況を監査し、カウントします。

Docker Harbor依存プログラム

  • パイソン;
  • Dockerをインストールします。
  • Docker の作成;

1. 港湾倉庫を建設する

ケースの説明:

CentOS7.4 が 2 台、サーバーが 1 台、クライアントが 1 台 (テスト用)。

両方のサーバーに Docker サービスをインストールする必要があります。私の Docker バージョンは 19.03.9 です。

Docker コンテナのインストールの詳細については、「Docker.v19.03.9 のインストール」を参照してください。

1. Docker Composeを構成する

Daoyunの公式サイトにアクセスし、Docker Composeのインストールを見つけて、Dockerサーバーにコマンドをコピーします:Daoyun

[root@centos01 ~]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 
<!--Docker Compose をダウンロード-->
[root@centos01 ~]# chmod +x /usr/local/bin/docker-compose <!--Docker Compose は実行権限を追加します-->
[root@centos01 ~]# docker-compose -v <!--Docker Compose のバージョンを表示-->
docker-compose バージョン 1.25.5、ビルド 8a1c60f6

2. Docker Harborパブリックリポジトリを構成する

1) Github公式サイトを開く

Github 公式サイトを開いて harbor を検索し、goharbor/harbor をクリックしてから「releases」をクリックし、必要に応じて対応するバージョンをダウンロードしてサーバーにアップロードします (URL は次のとおりです: https://github.com/goharbor/harbor/releases。オンライン インストール パッケージをダウンロードすることもできますが、私は試していないので、自分で試してみてください)。

2) 港湾倉庫を構成する

harbor-online-installer-v1.9.1.tgz <!--Harbor 圧縮パッケージをアップロード-->
[root@centos01 ~]# tar zxvf harbor-online-installer-v1.9.1.tgz -C /usr/local/
  <!-- harbor を /usr/local/directory に解凍します -->
[root@centos01 ~]# cd /usr/local/harbor/ <!--Harbor ディレクトリに入ります-->
[root@centos01 harbor]# cp harbor.yml harbor.yml.bak <!--Harborのメイン設定ファイルをバックアップ-->
[root@centos01 harbor]# vim harbor.yml <!--Harborのメイン設定ファイルを変更する-->
 5 ホスト名: 192.168.100.10 <!--Docker サーバーの IP アドレスに変更-->
<!--hostname はドメイン名にすることもできますが、ドメイン名の場合はホスト ファイルの変更や DNS のインストールも必要です。ここでは IP アドレスを使用します -->
 8 http: <!--http プロトコルを使用する-->
10 ポート: 80 <!--80 ポート番号-->
27 harbor_admin_password: Harbor12345 <!-- デフォルトのパスワード、カスタマイズ可能 -->
[root@centos01 harbor]# ./install.sh <!--Harbor をインストール-->
[ステップ0]: インストール環境の確認中...

注: docker バージョン: 19.03.9

注: docker-compose バージョン: 1.25.5
……………… <!--一部省略-->
港ログを作成中...完了
registryctl を作成しています...完了しました
redis を作成しています...完了
港湾ポータルを作成中...完了
レジストリを作成しています...完了
harbor-db を作成しています...完了
ハーバーコアを作成中...完了
nginx を作成しています...完了
harbor-jobservice を作成しています...完了

✔ ----Harbor が正常にインストールされ、起動しました。----

これで、 http://www.benet.com にある管理ポータルにアクセスできるようになります。
詳細については、https://github.com/goharbor/harbor をご覧ください。
   <!-- インストールが完了すると上記のコードが表示され、成功したことを示します -->
[root@centos01 ~]# vim /usr/lib/systemd/system/docker.service <!--この設定ファイルを編集します-->
14 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 192.168.100.10:80
 <!--この行を見つけて「--insecure-registr」を追加し、Harbor の IP とリスニング ポートを指定します-->
[root@centos01 harbor]# systemctl daemon-reload <!--docker をデーモンとして実行します-->
[root@centos01 harbor]# systemctl restart docker <!--Docker サービスを再起動します-->
[root@centos01 harbor]# docker-compose stop <!--すべてのコンテナを停止-->
[root@centos01 harbor]# docker-compose start <!--すべてのコンテナを起動-->
[root@centos01 harbor]# netstat -anptu |grep 80 <!--ポート80をリッスン-->
tcp6 0 0 :::80 :::* 23473/docker-proxyを聴く

3) インストールが完了したら、ブラウザを使用してHarborリポジトリにアクセスします。

4) パブリックリポジトリを作成する

5) イメージのパブリックリポジトリが正常に作成されたことを確認する

6) Dockerサーバー上のHarborリポジトリにログインする

[root@centos01 ~]# docker login -uadmin -pHarbor12345 192.168.100.10:80 <!--Harbor 倉庫にログイン-->
警告! CLI 経由で --password を使用することは安全ではありません。--password-stdin を使用してください。
警告! パスワードは暗号化されずに /root/.docker/config.json に保存されます。
この警告を削除するには、資格情報ヘルパーを構成します。
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

ログイン成功 <!--このプロンプトはログインが成功したことを示します-->
[root@centos01 ~]# docker tag tomcat:latest 192.168.100.10:80/image/nginx:nginx 
   <!--画像タグを変更する-->
[root@centos01 ~]# docker push 192.168.100.10:80/image/nginx:nginx
  <!--Harbor リポジトリにイメージをアップロードします-->
[root@centos01 ~]# docker logout 192.168.100.10:80 <!--Docker サーバーが Harbor を終了します -->
192.168.100.10:80 のログイン資格情報を削除しています

7) Harborは画像が正常にアップロードされたかどうかを確認します

3. Dockerクライアントを構成する

<!--Docker クライアントが Docker サービスをインストールします -->

1) Docker Harbor サーバーをロードするように設定ファイルを変更します [root@centos02 ~]# vim /usr/lib/systemd/system/docker.service <!--この設定ファイルを編集します-->
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 192.168.100.10:80 
 <!--この行を見つけて「--insecure-registr」を追加し、Harbor の IP とリスニング ポートを指定します-->
[root@centos02 ~]# systemctl daemon-reload <!--デーモンプロセスがdockerを実行します-->
[root@centos02 ~]# systemctl restart docker <!--docker サービスを再起動します-->
[root@centos02 ~]# dockerログイン -uadmin -pHarbor12345 192.168.100.10:80 
   <!--docker クライアントが Harbor にログインします-->
警告! CLI 経由で --password を使用することは安全ではありません。--password-stdin を使用してください。
警告! パスワードは暗号化されずに /root/.docker/config.json に保存されます。
この警告を削除するには、資格情報ヘルパーを構成します。
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

ログインに成功しました <!--ログインに成功しました-->
[root@centos02 ~]# docker pull 192.168.100.10:80/image/nginx:nginx 
 <!--Docker クライアントは Harbor パブリック リポジトリのイメージをダウンロードします -->
[root@centos02 ~]# docker images <!--Docker クライアント イメージを表示-->
リポジトリ タグ イメージ ID 作成 サイズ
192.168.100.10:80/image/nginx nginx 1b6b1fe7261e 7日前 647MB

4. ハーバーのプライベート倉庫を作成する

1) プライベート倉庫を作成する

2) ユーザーを作成する

3) 新しく作成したプライベートユーザーをプライベートリポジトリに追加する

4) ハーバープライベート倉庫に画像をアップロードする

[root@centos01 ~]# docker tag tomcat:latest 192.168.100.10:80/private/tomcat:tomcat 
  <!--Docker サーバーがイメージ タグを変更します-->
[root@centos01 ~]# docker login -uprivate -pHarbor12345 192.168.100.10:80 
   <!--Harborプライベート倉庫にログイン-->
警告! CLI 経由で --password を使用することは安全ではありません。--password-stdin を使用してください。
警告! パスワードは暗号化されずに /root/.docker/config.json に保存されます。
この警告を削除するには、資格情報ヘルパーを構成します。
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

ログインに成功しました <!--ログインに成功しました-->
[root@centos01 ~]# docker push 192.168.100.10:80/private/tomcat:tomcat 
  <!-- イメージをプライベートリポジトリにアップロードします -->

5) Harborは画像が正常にアップロードされたかどうかを確認します

6) Dockerクライアントはプライベートリポジトリ内のイメージをダウンロードします

[root@centos02 ~]# docker login -uprivate -pHarbor12345 192.168.100.10:80 
  <!--Docker クライアントが Harbor プライベート ウェアハウスにログインします -->
警告! CLI 経由で --password を使用することは安全ではありません。--password-stdin を使用してください。
警告! パスワードは暗号化されずに /root/.docker/config.json に保存されます。
この警告を削除するには、資格情報ヘルパーを構成します。
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

ログインに成功しました <!--ログインに成功しました-->
[root@centos02 ~]# docker pull 192.168.100.10:80/private/tomcat:tomcat 
   <!--Docker クライアントは Harbor プライベート ウェアハウス内のイメージをダウンロードします -->
[root@centos02 ~]# docker images <!--Docker クライアントはイメージが正常にダウンロードされたかどうかを確認します-->
リポジトリ タグ イメージ ID 作成 サイズ
192.168.100.10:80/image/nginx nginx 1b6b1fe7261e 7日前 647MB
192.168.100.10:80/private/tomcat tomcat 1b6b1fe7261e 7日前 647MB

7) Harborはログ統計機能をサポートしています

Docker を使って Harbor パブリック リポジトリを構築する方法についての記事はこれで終わりです。Docker を使って Harbor パブリック リポジトリを構築する方法の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • HarborをベースにしたDockerプライベートイメージリポジトリの構築の詳細な説明
  • Docker はプライベート ウェアハウス (レジストリ、ハーバー) を構築します
  • DockerプライベートライブラリHarborのアーキテクチャとコンポーネントの説明
  • プライベートDockerリポジトリであるHarborをインストールするための詳細な手順
  • プライベートウェアハウス(レジストリとハーバー)を構築するためのDockerの実装
  • ドッカー専用倉庫港湾建設プロセス
  • Dockerがプライベート倉庫Harborを構築する手順
  • Docker Gitlab+Jenkins+Harborは永続的なプラットフォーム運用を構築します
  • Docker+K8S+GitLab/SVN+Jenkins+Harbor をベースにした継続的インテグレーション配信環境の構築に関する詳細なチュートリアル
  • Harborを使用してプライベートDockerリポジトリを構築する方法
  • Docker5フル機能の港湾倉庫構築プロセス
  • docker compose を使用してハーバープライベートウェアハウスをインストールする詳細なチュートリアル
  • Jenkins は Docker イメージを構築し、Harbor ウェアハウスにプッシュします
  • HarborをベースにしたDocker専用倉庫の構築方法
  • Dockerプライベート倉庫Harborの導入と展開方法

<<:  ノードイベントループにおけるイベント実行の順序

>>:  MySQLのルートパスワードをリセットする最も簡単な方法

推薦する

Reactは複雑な検索フォームの展開と折りたたみ機能を実装します

時間に余裕を持って、過去を忘れましょう。前のセクションでは、[検索] フォームとクエリおよびリセット...

Docker Compose を使用して Confluence を構築するチュートリアル

この記事は「Attribution 4.0 International (CC BY 4.0)」ライ...

ウェブページの読みやすさを向上させるいくつかの方法

1. 対照的な色を使用します。ここでのコントラストとは、テキストの色と背景色のコントラストを指します...

Vueはシンプルなコメント機能を実装します

この記事では、Vueの簡単なコメント機能を実装するための具体的なコードを参考までに共有します。具体的...

Baidu の https 認証プロンプト「http サイトを 301 から https サイトにリダイレクトしてください」の解決方法の詳細な説明

最近、ウェブサイトを https アクセスに変換したいのですが、すべて完了した後、Baidu Web...

SQL実装 LeetCode (176. 2番目に高い給与)

[LeetCode] 176. 2番目に高い給与従業員テーブルから 2 番目に高い給与を取得する ...

MySQL 5.7 における基本的な JSON 操作ガイド

序文プロジェクトのニーズにより、ストレージ フィールドは JSON 形式で保存されます。プロジェクト...

phpmyadmin を使用して MySQL 権限を設定する方法

目次ステップ 1: root ユーザーとしてログインします。ステップ 2: 新しいデータ テーブルを...

Apache の一般的な仮想ホスト設定方法の分析

1. Apacheサーバーのインストールと設定yum インストール httpd -y systemc...

CSS のマージンの崩壊問題を解決する方法

まず、マージン崩壊が発生する 3 つの状況を見てみましょう。 1. 隣接する 2 つのブロックレベル...

Bootstrap 3.0 の特殊効果の学習ノート(表示と非表示、フローティングの除去、閉じるボタンなど)

この記事の主な内容は次のとおりです。 1. 閉じるボタン2.キャレット3. フローティングを素早く設...

MySQLシリーズ15 MySQL共通設定とパフォーマンスストレステスト

1. 一般的なMySQLの設定以下のすべての構成パラメータは、32G のメモリを搭載したサーバーに基...

MySQL エラー 1290 (HY000) の解決方法

私は長い間問題に取り組み、文法上の問題を何度も確認しました。しかし、後でネットで調べてみたら、突然理...

React+Amapは緯度と経度をリアルタイムで取得し、住所を特定します

目次1. マップを初期化する2. マップポイント3. 位置決めを有効にする4. マップの変更を監視す...

Vue バックエンド管理システムのページング機能の実装例

この記事では、主に Vue バックグラウンド管理システムのページング機能の実装を紹介し、次のように共...