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はテキストのレリーフ効果、彫刻効果、炎のテキストを実現します

推薦する

MySQLでデータベースデータ保存ディレクトリを変更する方法

序文MySQL データベースのデフォルトのデータベース ファイルは /var/lib/mysql に...

Linux で PHP を 5.6 にアップグレードする実用的な方法

1: ターミナルに入ったらPHPのバージョンを確認する php -v出力は次のようになります。 PH...

MySQL 時間差関数 (TIMESTAMPDIFF、DATEDIFF)、日付変換計算関数 (date_add、day、date_format、str_to_date)

1. 時間差関数(TIMESTAMPDIFF、DATEDIFF) MySQLを使用して時間差を計算...

Dockerコンテナのインポ​​ートとエクスポートに関するチュートリアル

背景Docker の人気は、コンテナの共有と移植が容易であることと密接に関係しています。ユーザーは、...

MySQLの保存場所を新しいディスクに移行する方法

1. 新しいディスクを準備し、現在のルートパーティションと同じファイルシステムでフォーマットし、ディ...

WAMPにインストールするとMySQLが起動できるが、再起動後に起動できなくなる問題の解決方法

初めてwampをインストールした後、すべてのサービスが正常に使用できますが、再起動するとwampのア...

ネイティブ js でカスタム スクロール バーを実装する

この記事の例では、カスタムスクロールバーを実装するためのjsの具体的なコードを参考までに共有していま...

CSS変数を使用して、クールで素晴らしいフローティング効果を実現します。

最近、Grover の Web サイトで楽しいホバー アニメーションを見つけ、自分自身のインスピレー...

親コンテナの CSS 均等分割 (完全三分の一) の実装

親コンテナの幅は固定されています。子要素が親の幅を均等に分割するには、どのような方法がありますか?コ...

CentOS7 に MySQL データベースをインストールしてデバッグする詳細な手順 [例]

この例では、デバッグ用の MySQL データベースをダウンロードしてインストールする必要があります。...

MySQL カウントを向上させる方法のまとめ

多くのプログラマーは MySQL に精通していると思います。多くの人が count の使い方と、最適...

NodeとPythonの双方向通信実装コード

目次プロセスコミュニケーションプロセス間の双方向通信問題要約するサードパーティのデータ サプライヤー...

Vue テンプレート構成と Webstorm コード形式仕様設定

目次1. コンパイラコードフォーマット仕様設定2. Vueテンプレートの設定1. コンパイラコードフ...

Vueはシンプルなショッピングカートの例を実装します

この記事では、参考までに、シンプルなショッピングカートケースを実装するためのVueの具体的なコードを...

MySQL無料インストールバージョンの設定チュートリアル

この記事では、参考までにMySQLの無料インストール構成チュートリアルを紹介します。具体的な内容は次...