DockerプライベートライブラリHarborのアーキテクチャとコンポーネントの説明

DockerプライベートライブラリHarborのアーキテクチャとコンポーネントの説明

この記事では、Harbor アーキテクチャの構成と、実行時に各コンポーネントを使用する方法について説明します。

建築

コンテナ情報

[root@liumiao 港]# docker-compose ps
    名前 コマンド 状態 ポート                
------------------------------------------------------------------------------------------------------------------------------------------------
harbor-adminserver /harbor/start.sh アップ                          
harbor-db /usr/local/bin/docker-entr ... 3306/tcp を起動                       
harbor-jobservice /harbor/start.sh アップ                          
harbor-log /bin/sh -c /usr/local/bin/ ... 127.0.0.1:1514->10514/tcp が起動しました                    
harbor-ui /harbor/start.sh アップ                          
nginx nginx -g デーモンをオフ; 0.0.0.0:443->443/tcp、0.0.0.0:4443->4443/tcp、0.0.0.0:80->80/tcp が起動しています 
redis docker-entrypoint.sh redis ... 6379/tcp を起動                       
レジストリ /entrypoint.sh サーブ /etc/ ... 5000/tcp をアップ [root@liumiao harbor]#

具体的な指示

プロキシ

プロキシは nginx をリバース プロキシとして使用し、プロセス全体の中核は nginx 構成ファイルにあります。次の構成ファイルを通じて、さまざまな他のコンポーネントを統合するための harbor の指示を明確に確認できます。実際の実装は基本的に nginx の設定に依存します。

[root@liumiao 港]# ls
ライセンス 共通 docker-compose.notary.yml ha harbor.v1.5.2.tar.gz open_source_license
通知 docker-compose.clair.yml docker-compose.yml harbor.cfg install.sh 準備
[root@liumiao harbor]# cat common/config/nginx/nginx.conf 
ワーカープロセスは自動です。
イベント {
 ワーカー接続 1024;
 epoll を使用します。
 multi_accept オン;
}
http {
 tcp_nodelay オン;
 # これは、すべてのケースでリクエストのバッファリングを無効にするために必要です
 プロキシ_http_バージョン 1.1;
 アップストリームレジストリ {
  サーバーレジストリ:5000;
 }
 アップストリームUI{
  サーバーUI:8080;
 }
 ログフォーマット timed_combined '$remote_addr - '
  '"$request" $status $body_bytes_sent'
  '"$http_referer" "$http_user_agent" '
  '$request_time $upstream_response_time $pipe';
 access_log /dev/stdout タイムド_結合;
 サーバー{
  聞く 80;
  server_tokens オフ;
  # 大きな画像のアップロード時に HTTP 413 を回避するために制限を無効にします
  クライアントの最大ボディサイズ 0;
  位置 / {
   proxy_pass http://ui/;
   proxy_set_header ホスト $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   # Nginx インスタンスなどの他のプロキシの背後に Harbor を設定する場合、プロキシにすでに同様の設定がある場合は、以下の行を削除します。
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_buffering をオフ;
   proxy_request_buffering をオフ;
  }
  場所 /v1/ {
   404 を返します。
  }
  場所 /v2/ {
   proxy_pass http://ui/registryproxy/v2/;
   proxy_set_header ホスト $http_host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   # Nginx インスタンスなどの他のプロキシの背後に Harbor を設定する場合、プロキシにすでに同様の設定がある場合は、以下の行を削除します。
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_buffering をオフ;
   proxy_request_buffering をオフ;
  }
  場所 /サービス/ {
   proxy_pass http://ui/service/;
   proxy_set_header ホスト $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   # Nginx インスタンスなどの他のプロキシの背後に Harbor を設定する場合、プロキシにすでに同様の設定がある場合は、以下の行を削除します。
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_buffering をオフ;
   proxy_request_buffering をオフ;
  }
  場所 /サービス/通知 {
   404 を返します。
  }
 }
}
[root@liumiao 港]#

データベース

MariaDB 10.2.14が使用されており、ハーバーのデータベース名はレジストリであることがわかります。

[root@liumiao harbor]# docker exec -it harbor-db sh
sh-4.3#mysql -uroot -pliumiaopw
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MariaDB接続IDは21です
サーバーバージョン: 10.2.14-MariaDB ソース配布
Copyright (c) 2000、2018、Oracle、MariaDB Corporation Ab およびその他。
ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。
MariaDB [(なし)]> データベースを表示します。
+--------------------+
| データベース |
+--------------------+
| 情報スキーマ |
|mysql |
| パフォーマンススキーマ |
| レジストリ |
+--------------------+
セット内の 4 行 (0.00 秒)
MariaDB [(なし)]>

データベーステーブルの情報を確認すると、この使用モードの現在のバージョンでは、データベースには次のように約20個のテーブルがあることがわかります。

MariaDB [(なし)]> レジストリを使用します。
テーブル名と列名の補完のためのテーブル情報の読み取り
-Aでこの機能をオフにすると起動が速くなります。
データベースが変更されました
MariaDB [レジストリ]> テーブルを表示します。
+---------------------------------+
| レジストリ内のテーブル |
+---------------------------------+
| アクセス |
| アクセスログ |
| アレンビックバージョン |
|clair_vuln_タイムスタンプ|
|港のラベル|
| 港湾資源ラベル |
| 画像スキャンジョブ |
| 画像スキャンの概要 |
| プロジェクト |
| プロジェクトメンバー |
| プロジェクトメタデータ |
| プロパティ |
| レプリケーション即時トリガー |
| レプリケーションジョブ |
| レプリケーションポリシー |
| レプリケーションターゲット |
| リポジトリ |
| 役割 |
| ユーザー |
| ユーザーグループ |
+---------------------------------+
セット内の行数は 20 です (0.00 秒)
MariaDB [レジストリ]>

ログコレクター

デフォルトでは、ハーバーのログは次のディレクトリに収集され、管理されます。

[root@liumiao harbor]# ls /var/log/harbor
adminserver.log jobservice.log mysql.log proxy.log redis.log registry.log ui.log
[root@liumiao 港]#

ドッカーの作成

[root@liumiao harbor]# cat docker-compose.yml 
バージョン: '2'
サービス:
 ログ:
  イメージ: vmware/harbor-log:v1.5.2
  コンテナ名: ハーバーログ 
  再起動: 常に
  ボリューム:
   - /var/log/harbor/:/var/log/docker/:z
   - ./common/config/log/:/etc/logrotate.d/:z
  ポート:
   - 127.0.0.1:1514:10514
  ネットワーク:
   -港
 レジストリ:
  イメージ: vmware/registry-photon:v2.6.2-v1.5.2
  コンテナ名: レジストリ
  再起動: 常に
  ボリューム:
   - /データ/レジストリ:/ストレージ:z
   - ./common/config/registry/:/etc/registry/:z
  ネットワーク:
   -港
  環境:
   -GODEBUG=netdns=cgo
  指示:
   ["サーブ", "/etc/registry/config.yml"]
  依存:
   -ログ
  ログ記録:
   ドライバー: "syslog"
   オプション: 
    syslog アドレス: "tcp://127.0.0.1:1514"
    タグ: 「レジストリ」
 マイスク:
  イメージ: vmware/harbor-db:v1.5.2
  コンテナ名: harbor-db
  再起動: 常に
  ボリューム:
   - /data/データベース:/var/lib/mysql:z
  ネットワーク:
   -港
  環境変数:
   - ./common/config/db/env
  依存:
   -ログ
  ログ記録:
   ドライバー: "syslog"
   オプション: 
    syslog アドレス: "tcp://127.0.0.1:1514"
    タグ: "mysql"
 管理サーバー:
  イメージ: vmware/harbor-adminserver:v1.5.2
  コンテナ名: ハーバー管理サーバー
  環境変数:
   - ./common/config/adminserver/env
  再起動: 常に
  ボリューム:
   - /data/config/:/etc/adminserver/config/:z
   - /data/secretkey:/etc/adminserver/key:z
   - /データ/:/データ/:z
  ネットワーク:
   -港
  依存:
   -ログ
  ログ記録:
   ドライバー: "syslog"
   オプション: 
    syslog アドレス: "tcp://127.0.0.1:1514"
    タグ: "adminserver"
 ユーザ:
  イメージ: vmware/harbor-ui:v1.5.2
  コンテナ名: harbor-ui
  環境変数:
   ./common/config/ui/env を参照してください。
  再起動: 常に
  ボリューム:
   - ./common/config/ui/app.conf:/etc/ui/app.conf:z
   - ./common/config/ui/private_key.pem:/etc/ui/private_key.pem:z
   - ./common/config/ui/certificates/:/etc/ui/certificates/:z
   - /data/secretkey:/etc/ui/key:z
   - /data/ca_download/:/etc/ui/ca/:z
   - /data/psc/:/etc/ui/token/:z
  ネットワーク:
   -港
  依存:
   -ログ
   -管理者サーバー
   - レジストリ
  ログ記録:
   ドライバー: "syslog"
   オプション: 
    syslog アドレス: "tcp://127.0.0.1:1514"
    タグ: "ui"
 ジョブサービス:
  イメージ: vmware/harbor-jobservice:v1.5.2
  コンテナ名: ハーバージョブサービス
  環境変数:
   - ./common/config/jobservice/env
  再起動: 常に
  ボリューム:
   - /data/job_logs:/var/log/jobs:z
   - ./common/config/jobservice/config.yml:/etc/jobservice/config.yml:z
  ネットワーク:
   -港
  依存:
   - レディス
   - ユーアイ
   -管理者サーバー
  ログ記録:
   ドライバー: "syslog"
   オプション: 
    syslog アドレス: "tcp://127.0.0.1:1514"
    タグ: "jobservice"
 レディス:
  イメージ: vmware/redis-photon:v1.5.2
  コンテナ名: redis
  再起動: 常に
  ボリューム:
   - /データ/redis:/データ
  ネットワーク:
   -港
  依存:
   -ログ
  ログ記録:
   ドライバー: "syslog"
   オプション: 
    syslog アドレス: "tcp://127.0.0.1:1514"
    タグ: "redis"
 プロキシ:
  イメージ: vmware/nginx-photon:v1.5.2
  コンテナ名: nginx
  再起動: 常に
  ボリューム:
   - ./common/config/nginx:/etc/nginx:z
  ネットワーク:
   -港
  ポート:
   - 80:80
   -443:443
   -4443:4443
  依存:
   -MySQLについて
   - レジストリ
   - ユーアイ
   -ログ
  ログ記録:
   ドライバー: "syslog"
   オプション: 
    syslog アドレス: "tcp://127.0.0.1:1514"
    タグ: 「プロキシ」
ネットワーク:
 港:
  外部: 偽
[root@liumiao 港]#

注: カスタムポート番号

前の記事の例では、デフォルトのポート 80 を港のポートとして使用しています。これを変更したい場合 (たとえば、8848 に変更したい場合) は、以下の手順に従って変更してください。

コンテンツの設定

港湾設定項目の詳細情報は、データベースのプロパティまたはapi/systeminfoで確認できます。

プロパティ

[root@liumiao harbor]# docker exec -it harbor-db sh
sh-4.3#mysql -uroot -pliumiaopw
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MariaDB接続IDは153です
サーバーバージョン: 10.2.14-MariaDB ソース配布
Copyright (c) 2000、2018、Oracle、MariaDB Corporation Ab およびその他。
ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。
MariaDB [(なし)]> レジストリを使用する
テーブル名と列名の補完のためのテーブル情報の読み取り
-Aでこの機能をオフにすると起動が速くなります。
データベースが変更されました
MariaDB [レジストリ]> プロパティから * を選択します。
+----+--------------------------------+------------------------------------------------+
| id | k | v |
+----+--------------------------------+------------------------------------------------+
| 1 | cfg_expiration | 5 |
| 2 | プロジェクト作成制限 | 全員 |
| 3 | uaa_client_secret | <enc-v1>cBvRPcG+p3oNVnJh8VM+SjvlcEsKYg== |
| 4 | clair_db_host | postgres |
| 5 | トークンサービス URL | http://ui:8080/service/token |
| 6 | mysql_password | <enc-v1>HDqd+PbHcG9EWK9DF3RzM43fTtPvCjdvyQ== |
| 7 | uaa_endpoint | uaa.mydomain.org |
| 8 | 最大ジョブワーカー数 | 50 |
| 9 | sqlite_file | |
| 10 | email_from | admin <[email protected]> |
| 11 | ldap_base_dn | ou=people、dc=mydomain、dc=com |
| 12 | clair_db_port | 5432 |
| 13 | mysql_port | 3306 |
| 14 | ldap_search_dn | |
| 15 | clair_db_username | postgres |
| 16 | 電子メールが安全でない | 偽 |
| 17 | データベースタイプ | mysql |
| 18 | ldap_filter | |
| 19 | 公証人付き | 偽 |
| 20 | 管理者初期パスワード | <enc-v1>4ZEvd/GfBYSdF9I6PfeI/XIvfGhPITaD3w== |
| 21 | notary_url | http://notary-server:4443 |
| 22 | 認証モード | db_auth |
| 23 | ldap_group_search_scope | 2 |
| 24 | ldap_uid | uid |
| 25 | email_username | [email protected] |
| 26 | mysql_database | レジストリ |
| 27 | リロードキー | |
| 28 | clair_url | http://clair:6060 |
| 29 | ldap_group_search_filter | オブジェクトクラス=グループ |
| 30 | メールアドレスパスワード | <enc-v1>h18ptbUM5oJwtKOzjJ4X5LOiPw== |
| 31 | email_ssl | 偽 |
| 32 | ldap_timeout | 5 |
| 33 | uaa_client_id | ID |
| 34 | レジストリ ストレージ プロバイダー名 | ファイルシステム |
| 35 | 自己登録 | true |
| 36 | 電子メールポート | 25 |
| 37 | ui_url | http://ui:8080 |
| 38 | トークン有効期限 | 30 |
| 39 | 電子メール ID | |
| 40 | clair_db | postgres |
| 41 | uaa_verify_cert | 真 |
| 42 | ldap_verify_cert | 真 |
| 43 | ldap_group_attribute_name | cn |
| 44 | mysql_host | mysql |
| 45 | 読み取り専用 | 偽 |
| 46 | ldap_url | ldaps://ldap.mydomain.com |
| 47 | 外部エンドポイント | http://192.168.163.128 |
| 48 | ldap_group_base_dn | ou=グループ、dc=mydomain、dc=com |
| 49 | with_clair | 偽 |
| 50 | admiral_url | NA |
| 51 | ldap_scope | 2 |
| 52 | レジストリ URL | http://registry:5000 |
| 53 | ジョブサービス URL | http://jobservice:8080 |
| 54 | 電子メールホスト | smtp.mydomain.com |
| 55 | ldap_search_password | <enc-v1>F2QZkeEPTQPsJ9KNsBWcXA== |
| 56 | mysql_username | ルート |
| 57 | clair_db_password | <enc-v1>IGBg3NxvT7qCYGIB+zizax+GojoM7ao2VQ== |
+----+--------------------------------+------------------------------------------------+
セット内の行数は 57 です (0.00 秒)
MariaDB [レジストリ]>

API/システム情報

[root@liumiao harbor]# curl http://localhost/api/systeminfo 
{
 "with_notary": false,
 "with_clair": 偽、
 "with_admiral": false,
 "admiral_endpoint": "NA",
 "auth_mode": "db_auth",
 "レジストリURL": "192.168.163.128",
 "プロジェクト作成制限": "全員",
 「自己登録」:true、
 "has_ca_root": 偽、
 "ハーバーバージョン": "v1.5.2-8e61deae",
 "次のスキャンすべて": 0,
 "registry_storage_provider_name": "ファイルシステム",
 "読み取り専用": 偽
}[root@liumiao 港]#

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • Docker に共通コンポーネント (mysql、redis) をインストールする方法
  • Dockerコアコンポーネントのユニオンファイルシステムの詳細な説明

<<:  メモリ構成が過剰でMySQLが起動できない問題の解決方法

>>:  Vue でメニュー権限制御を実装するためのサンプルコード

推薦する

MySQL 最適化技術における Limit クエリの最適化分析

序文実際のビジネスでは、ページングは​​一般的なビジネス要件です。次に、制限クエリを使用します。制限...

Bootstrap3.0 学習ノートテーブル関連

この記事では、Webサイトを作ったことがある人にとっては馴染みのあるテーブルについて主に説明します。...

Mac に Windows サービスを備えた仮想マシンをインストールする方法

1. 仮想マシンをダウンロードする公式ダウンロードウェブサイト: https://www.vmwar...

WebWorkerはJavaScriptサンドボックスの詳細をカプセル化します

目次1. シナリオ2. IJavaScriptShadowboxを実装する2.1 メインスレッドの実...

Docker tomcatのメモリサイズを設定する方法

Docker に Tomcat をインストールする場合、大きなファイルをダウンロードするときなど、場...

Vue モバイル開発で better-scroll を使用するときにクリック イベントが失敗する問題の解決策

最近、モバイル プロジェクトの開発方法を学ぶために vue を使用し、スクロールには better-...

VMware15 の Deepin インストール詳細チュートリアル (画像とテキスト)

序文Deepin のユーザー インターフェイスは、使用時に非常に見栄えがします。インターフェイス効果...

16 の XHTML1.0 と HTML の互換性ガイドラインの概要

1.ページを XML タイプとして宣言しないでください。ページでは UTF-8 または UTF-16...

VMware + Ubuntu18.04 による Hadoop クラスタ環境の構築に関するグラフィック チュートリアル

目次序文VMware クローン仮想マシン (準備、3 台の仮想マシンのクローン、1 台のマスター、2...

W3C チュートリアル (2): W3C プログラム

W3C 標準化プロセスは 7 つの異なるステップに分かれています。 W3C 標準化プロセスは 7 つ...

Vue で video.js を使用して m3u8 形式のビデオを再生する方法

目次1. インストール2. videojsの紹介3. コンポーネントでのテストと使用1. 基本的な自...

Centos7 から Centos8 へのアップグレードに関するチュートリアル (画像とテキスト付き)

正式な環境でアップグレードする場合は、データと重要な設定をバックアップしてください。アップグレードに...

Dockerネットワーク作成に--subnetを追加した後の問題を解決する

Docker ネットワークの作成に –subnet を追加した後、docker network ls...

vue+antv でレーダーチャートを実装するためのサンプルコード

1. 依存関係をダウンロードするnpm インストール @antv/データセットnpm インストール ...