docker compose を使用してハーバープライベートウェアハウスをインストールする詳細なチュートリアル

docker compose を使用してハーバープライベートウェアハウスをインストールする詳細なチュートリアル

概要

港とは何ですか?英語の単語の意味は「港」です。 Harborはコンテナ(貨物)を保管するために使われており、Dockerの起源はコンテナの原理に基づいているため、HarborはDockerイメージを保管するために使われ、イメージ倉庫として使われています。公式声明は次のとおりです: Harbor は、Docker イメージを保存および配布するためのエンタープライズ レベルのレジストリ サーバーです。

ハーバー イメージ ウェアハウスは、VMware がオープンソース化したエンタープライズ レベルのイメージ ウェアハウスです。権限管理 (RBAC)、LDAP、ログ監査、管理インターフェイス、自己登録、イメージ複製などの多くの機能が含まれています。

1. 港の特徴

1. ロールベースのアクセス制御: ユーザーとリポジトリは「プロジェクト」ごとに編成され、ユーザーは同じ名前空間内の複数のイメージリポジトリに対して異なる権限を持つことができます。
2. ミラーレプリケーション: 複数のレジストリインスタンス間で画像とグラフを複製 (同期) できます。エラーが発生した場合、Harbor は自動的にレプリケーションを再試行します。負荷分散、高可用性、マルチデータセンター、ハイブリッド、マルチクラウドのシナリオに最適です。
LDAP/AD サポート: Harbor は、ユーザー認証と管理のために既存のエンタープライズ LDAP/AD と統合し、LDAP グループを Harbor にインポートして適切なプロジェクト ロールを割り当てることをサポートします。
イメージの削除とガベージ コレクション: イメージを削除し、そのスペースを再利用することができます。
4. 国際化:複数の言語をサポート(中国語、英語、ドイツ語、日本語、ロシア語がすでにサポートされています)。
5. グラフィカル ユーザー インターフェイス: ユーザーはリポジトリを簡単に参照、検索し、プロジェクトを管理できます。
6. 監査管理: リポジトリ上のすべての操作を追跡します。
7. RESTful API: ほとんどの管理操作に対応する RESTful API。外部システムとの統合が容易です。 API の探索とテストには、組み込みの Swagger ユーザー インターフェイスを使用できます。
簡単な導入: オンラインおよびオフラインのインストーラーが利用可能です。また、vSphere プラットフォーム上に仮想アプライアンスとしてインストールすることもできます (OVA 形式)。

2. 港湾コンポーネント

1. プロキシ: レジストリ、UI、トークン サービスなどの Harbor のコンポーネントはすべて、リバース プロキシの背後に配置されます。プロキシは、ブラウザと Docker クライアントからのリクエストをさまざまなバックエンド サービスに転送します。
2. レジストリ: Docker イメージの保存と Docker プッシュ/プル コマンドの処理を担当します。 Harbor はイメージへのアクセス許可を制御する必要があるため、レジストリはクライアントにトークン サービスにアクセスして、プルまたはプッシュ要求ごとに有効なトークンを取得するように指示します。
3. コアサービス:主に以下のサービスを提供するHarborのコア機能。
1) UI: ユーザーが画像を管理し、ユーザーを承認できるようにグラフィカル ユーザー インターフェイスを提供します。
2) Webhook: レジストリ上のイメージのステータス変更をタイムリーに取得するには、レジストリ上で Webhook を構成して、ステータス変更を UI モジュールに渡します。
3) トークン サービス: プロジェクト内のユーザーの役割に基づいて、各 docker push/pull コマンドのトークンを発行します。 Docker クライアントから送信されたリクエストにトークンがない場合、レジストリはリクエストをトークン サービスにリダイレクトします。
4. データベース: コア サービスにデータベース サービスを提供して、ユーザー権限、監査ログ、Docker イメージのグループ化情報、その他のデータを保存します。
5. ジョブ サービス: リモート イメージ管理機能を提供し、ローカル イメージを他のハーバー インスタンスと同期できます。
6. ログ コレクター: Harbor の動作を監視し、将来の分析のために携帯電話の他のコンポーネントのログを管理します。

ここに画像の説明を挿入

3. 導入環境

セントオス7.6 192.168.8.130
Docker バージョン 1.19.3
docker-compose バージョン 1.24.2
ハーバーオフラインインストーラーv1.8.6.tgz

4. docker-composeをインストールする

方法1:
[root@centos130 ~]# curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
[root@centos130 ~]# chmod +x /usr/local/bin/docker-compose
方法2:
[root@centos130 ~]# wget https://bootstrap.pypa.io/get-pip.py
[root@centos130 ~]# python get-pip.py
[root@centos130 ~]# pip で docker-compose をインストールします

5. docker-composeをアンインストールする

#バイナリ:
[root@centos130 ~]rm /usr/local/bin/docker-compose
#ピップ:
[root@centos130 ~]pip アンインストール docker-compose

6. Dockerをインストールする

[root@centos130 ~]# yum install -y yum-utils デバイスマッパー永続データ lvm2
安定したソースを追加します [root@centos130 ~]# yum-config-manager --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@centos130 ~]# yum makecache fast
docker-ceの最新の安定バージョンをインストールする
[root@centos130 ~]# yum install -y docker-ce docker-ce-cli containerd.io vim
[root@centos130 ~]# mkdir /etc/docker && vim /etc/docker/daemon.json
{
  "レジストリミラー": ["https://yxrgrke0.mirror.aliyuncs.com"],
  "安全でないレジストリ": ["192.168.8.130:5000"],
  "安全でないレジストリ": ["centos130:80"],
  "ログドライバー": "json ファイル",
  「ログオプション」: {
    "最大サイズ": "100m",
    "最大ファイル": "3"
    }
}
Dockerを起動する
[root@centos130 ~]# systemctl デーモンリロード
[root@centos130 ~]# systemctl enable docker && systemctl start docker
[root@centos130 ~]# systemctl ステータス docker

7. 港をインストールする

港のダウンロードアドレス:
ハーバー github アドレス https://github.com/goharbor/harbor
オリエントソフト
[root@centos130 ~]# wget https://storage.googleapis.com/harbor-releases/release-1.8.6/harbor-offline-installer-v1.8.6.tgz
[root@centos130 ~]# tar -xf harbor-offline-installer-v1.8.6.tgz -C /usr/local/
[root@centos130 ~]# cd /usr/local/harbor/
[root@centos130 ~]# vim harbor.yml
ホスト名 = centos130
#これは単なる簡単なテストなので、この行のみを編集し、他の行はデフォルトで変更しないでください #ユーザー登録を無効にする self_registration = off
#管理者のみがプロジェクトを作成できるように設定する project_creation_restriction = adminonly

8. インストールスクリプトを実行する

[root@centos130 ~]# ./instsll.sh  
説明: インストール エラー: docker-proxy、docker-runc が見つかりません
[root@centos130 ~]# ln -s /usr/libexec/docker/docker-runc-current /usr/bin/docker-runc を実行します。
[root@centos130 ~]# ln -s /usr/libexec/docker/docker-proxy-current /usr/bin/docker-proxy
起動したイメージファイルを表示する [root@centos130 ~]# docker-compose ps
ハーバーコンテナの停止と起動:
[root@centos130 ~]# cd /usr/local/harbor/
[root@centos130 ~]# docker-compose を停止します
[root@centos130 ~]# docker-compose を開始します

9. Harborにログインする

インストールはこれで完了です。ブラウザを開いて直接ログインし、自分のプロジェクトを作成してください。
デフォルトのユーザーパスワードは admin/Harbor12345 です。

ここに画像の説明を挿入

Shellコマンドラインターミナル経由でハーバーリポジトリにログインする

[root@centos130 ~]# harbor イメージをアップロード [root@centos130 ~]# docker login centos130:80
[root@centos130 ~]# docker login -u admin -p Harbor12345 centos130:80 #アカウントとパスワード: admin/Harbor12345
ユーザー名: admin
パスワード: 
ログインに成功しました

テスト画像のアップロード

[root@centos130 ~]# docker pull nginx
[root@centos130 ~]# docker tag nginx:latest centos130:80/my/nginx:latest
[root@centos130 ~]# docker イメージ
[root@centos130 ~]# docker push centos130:80/my/nginx:latest
プッシュはリポジトリ [centos130:80/my/nginx] を参照します
55a77731ed26: プッシュ 
71f2244bc14d: プッシュ 
f2cb0ecef392: プッシュ 
最新: ダイジェスト: sha256:3936fb3946790d711a68c58be93628e43cbca72439079e16d154b5db216b58da サイズ: 948

注: 形式は次のとおりです: ユーザー IP/プロジェクト名/イメージ名:バージョン番号 (プロジェクト名は WebUI で事前に作成する必要があります)
[root@centos130 ~]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
centos130:80/my/nginx:latest 最新 5a3221f0137b 5日前 126MB
nginx 最新 5a3221f0137b 5日前 126MB
ローカルの nginx イメージを削除し、ダウンロードをテストします [root@centos130 ~]# docker pull centos130:80/my/nginx:latest

10. Harborがポート番号を変更する

1. ポート 1180 への docker-compose.yml ファイルのマッピングを変更します。

設定ファイル [root@centos130 ~]# cat /usr/local/harbor/docker-compose.yml を変更します。

バージョン: '2.3'
サービス:
  ログ:
    画像: goharbor/harbor-log:v1.8.6
    コンテナ名: ハーバーログ
    再起動: 常に
    dns_search: .
    キャップドロップ:
      - 全て
    キャップ追加:
      -チョーン
      -DAC_オーバーライド
      -SETGID
      -SETUID
    ボリューム:
      - /var/log/harbor/:/var/log/docker/:z
      - ./common/config/log/:/etc/logrotate.d/:z
    ポート:
      - 127.0.0.1:1514:10514
    ネットワーク:
      -港
  レジストリ:
    イメージ: goharbor/registry-photon:v2.7.1-patch-2819-v1.8.6
    コンテナ名: レジストリ
    再起動: 常に
    キャップドロップ:
      - 全て
    キャップ追加:
      -チョーン
      -SETGID
      -SETUID
    ボリューム:
      - /データ/レジストリ:/ストレージ:z
      - ./common/config/registry/:/etc/registry/:z
      - タイプ: バインド
        ソース: /data/secret/registry/root.crt
        ターゲット: /etc/registry/root.crt
    ネットワーク:
      -港
    dns_search: .
    依存:
      -ログ
    ログ記録:
      ドライバー: "syslog"
      オプション:  
        syslog アドレス: "tcp://127.0.0.1:1514"
        タグ: 「レジストリ」
  レジストリctl:
    イメージ: goharbor/harbor-registryctl:v1.8.6
    コンテナ名: registryctl
    環境変数:
      - ./common/config/registryctl/env
    再起動: 常に
    キャップドロップ:
      - 全て
    キャップ追加:
      -チョーン
      -SETGID
      -SETUID
    ボリューム:
      - /データ/レジストリ:/ストレージ:z
      - ./common/config/registry/:/etc/registry/:z
      - タイプ: バインド
        ソース: ./common/config/registryctl/config.yml
        ターゲット: /etc/registryctl/config.yml
    ネットワーク:
      -港
    dns_search: .
    依存:
      -ログ
    ログ記録:
      ドライバー: "syslog"
      オプション:  
        syslog アドレス: "tcp://127.0.0.1:1514"
        タグ: "registryctl"
  PostgreSQL:
    イメージ: goharbor/harbor-db:v1.8.6
    コンテナ名: harbor-db
    再起動: 常に
    キャップドロップ:
      - 全て
    キャップ追加:
      -チョーン
      -DAC_オーバーライド
      -SETGID
      -SETUID
    ボリューム:
      - /data/データベース:/var/lib/postgresql/data:z
    ネットワーク:
      港:
    dns_search: .
    環境変数:
      - ./common/config/db/env
    依存:
      -ログ
    ログ記録:
      ドライバー: "syslog"
      オプション:  
        syslog アドレス: "tcp://127.0.0.1:1514"
        タグ: "postgresql"
  コア:
    イメージ: goharbor/harbor-core:v1.8.6
    コンテナ名: ハーバーコア
    環境変数:
      ./common/config/core/env を参照してください。
    再起動: 常に
    キャップドロップ:
      - 全て
    キャップ追加:
      -SETGID
      -SETUID
    ボリューム:
      - /data/ca_download/:/etc/core/ca/:z
      - /data/psc/:/etc/core/token/:z
      - /データ/:/データ/:z
      - ./common/config/core/certificates/:/etc/core/certificates/:z
      - タイプ: バインド
        ソース: ./common/config/core/app.conf
        ターゲット: /etc/core/app.conf
      - タイプ: バインド
        ソース: /data/secret/core/private_key.pem
        ターゲット: /etc/core/private_key.pem
      - タイプ: バインド
        ソース: /data/secret/keys/secretkey
        ターゲット: /etc/core/key
    ネットワーク:
      港:
    dns_search: .
    依存:
      -ログ
      - レジストリ
    ログ記録:
      ドライバー: "syslog"
      オプション:  
        syslog アドレス: "tcp://127.0.0.1:1514"
        タグ: 「コア」
  ポータル:
    画像: goharbor/harbor-portal:v1.8.6
    コンテナ名: 港湾ポータル
    再起動: 常に
    キャップドロップ:
      - 全て
    キャップ追加:
      -チョーン
      -SETGID
      -SETUID
      -NET_BIND_SERVICE
    ネットワーク:
      -港
    dns_search: .
    依存:
      -ログ
      -コア
    ログ記録:
      ドライバー: "syslog"
      オプション:
        syslog アドレス: "tcp://127.0.0.1:1514"
        タグ: 「ポータル」

  ジョブサービス:
    イメージ: goharbor/harbor-jobservice:v1.8.6
    コンテナ名: ハーバージョブサービス
    環境変数:
      - ./common/config/jobservice/env
    再起動: 常に
    キャップドロップ:
      - 全て
    キャップ追加:
      -チョーン
      -SETGID
      -SETUID
    ボリューム:
      - /data/job_logs:/var/log/jobs:z
      - タイプ: バインド
        ソース: ./common/config/jobservice/config.yml
        ターゲット: /etc/jobservice/config.yml
    ネットワーク:
      -港
    dns_search: .
    依存:
      - レディス
      -コア
    ログ記録:
      ドライバー: "syslog"
      オプション:
        syslog アドレス: "tcp://127.0.0.1:1514"
        タグ: "jobservice"
  レディス:
    イメージ: goharbor/redis-photon:v1.8.6
    コンテナ名: redis
    再起動: 常に
    キャップドロップ:
      - 全て
    キャップ追加:
      -チョーン
      -SETGID
      -SETUID
    ボリューム:
      - /data/redis:/var/lib/redis
    ネットワーク:
      港:
    dns_search: .
    依存:
      -ログ
    ログ記録:
      ドライバー: "syslog"
      オプション:
        syslog アドレス: "tcp://127.0.0.1:1514"
        タグ: "redis"
  プロキシ:
    イメージ: goharbor/nginx-photon:v1.8.6
    コンテナ名: nginx
    再起動: 常に
    キャップドロップ:
      - 全て
    キャップ追加:
      -チョーン
      -SETGID
      -SETUID
      -NET_BIND_SERVICE
    ボリューム:
      - ./common/config/nginx:/etc/nginx:z
    ネットワーク:
      -港
    dns_search: .
    ポート:
      - 1180:80
      -443:443
      -4443:4443
    依存:
      - PostgreSQL
      - レジストリ
      -コア
      - ポータル
      -ログ
    ログ記録:
      ドライバー: "syslog"
      オプション:  
        syslog アドレス: "tcp://127.0.0.1:1514"
        タグ: 「プロキシ」
ネットワーク:
  港:
    外部: 偽

2. /etc/docker/daemon.json ファイルを変更し、ポート 80 をポート 1180 に変更します。

デーモンの設定を変更する [root@centos130 ~]# cat /etc/docker/daemon.json 

{
  "レジストリミラー": ["https://yxrgrke0.mirror.aliyuncs.com"],
  "安全でないレジストリ": ["192.168.8.130:5000"],
  "安全でないレジストリ": ["centos130:1180"],
  "ログドライバー": "json ファイル",
  「ログオプション」: {
    "最大サイズ": "100m",
    "最大ファイル": "3"
    }
}

3. /usr/locat/harbor/harbor.ymlファイルのホスト名を変更する

ホスト名の設定を変更 cat /usr/locat/harbor/harbor.yml
ホスト名: centos130:1180

4. ハーバーを停止し、再起動して設定ファイルを生成する

再初期化 [root@centos130 ~]# cd /usr/locat/harbor/
[root@centos130 ~]# docker-compose を停止します
[root@centos130 ~]# ./install.sh

5. Dockerを再起動する

[root@centos130 ~]# systemctl デーモンリロード
[root@centos130 ~]# systemctl docker.service を再起動します
[root@centos130 ~]# docker login centos130:1180 を確認します
ユーザー名: admin
パスワード: Harbor12345

docker-compose で harbor をインストールする方法についてはこれで終わりです。docker-compose で harbor をインストールする方法についての詳細は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  MySQL統計データテーブルの設計方法

>>:  CSS3はテキストのレリーフ効果、彫刻効果、炎のテキストを実現します

推薦する

VMwareを使用したPermeateレンジシステムのインストール手順の詳細説明

1. 背景私たちは時々社内研修を行っており、実験環境をよく利用しています。最初はdockerコンテナ...

MySQL 8.0はJSONを扱えるようになりました

目次1. 概要2. JSON基本ツール3. JSONパス式4. JSONを検索して変更する序文:長い...

Vueで背景色と透明度を設定する方法

背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...

JSX を使用してコンポーネント パーサー開発を構築する例

目次JSX環境の構築プロジェクトの設定NPMを初期化するwebpackをインストールするBabelを...

Mac インストール mysqlclient プロセス分析

仮想環境で pip 経由でインストールしてみてください: pip で mysqlclient をイン...

mysql8.0.11をインストールしてrootパスワードを変更し、navicat for mysqlに接続するアイデアの詳細な説明

1.1. ダウンロード:公式ウェブサイトから zip パッケージをダウンロードします。私は 64 ビ...

Linux で libudev を使用して USB デバイスの VID と PID を取得する方法

この記事では、libudev ライブラリを使用して hidraw デバイスにアクセスします。 lib...

ベースリンクタグの使用の紹介ベース

<br />リンクをクリックすると、ポップアップ表示される Web ページ アドレスは ...

MySQLのパラメータについてお話しましょう

序文:以前の記事では、特定のパラメータの機能についてよく紹介してきました。しかし、MySQL パラメ...

html+vue+element-ui のスムーズさを 1 分で体験

テクノロジーファンHTMLウェブページ、知っておくべきYouyou が開発した vue フロントエン...

フレックスインサイドボタンの垂直方向の中央揃えが中央揃えにならない問題の解決方法

問題の説明ボタンのスタイルはアイコン + テキストです。フレックス レイアウトを使用して垂直方向に中...

Vue-Routerのインストールと使用方法の詳細な説明

目次インストールルーティングの基本構成Vue にルーターをインストールするルーターの設定Router...

JS 関数のアンチシェイクと関数スロットリングを理解する方法

目次概要1. 関数デバウンス2. 機能スロットリング(スロットル)概要関数アンチシェイクと関数スロッ...

ミニマルなウェブサイトデザインの例

Web アプリケーション クラス1. みんなのためにダウンまたは私だけのためにこのウェブサイトは、ウ...

Centos7 で keepalived ログを別のパスに設定する方法の詳細な説明

Keepalived のインストール: cd <keepalived_sourcecode_p...