手当たり次第に書くんだ

飽きっぽいのは本能

Docker Harbor プライベートコンテナレジストリ構築

目次に戻る

概要

Harborはオープンソースのプライベートレジストリです。業務でコンテナを使用する(Docker, Kubernetes等)場合にDocker HUBを使用することはセキュリティ上少ないと思いますので、何らかのプライベートレジストリは必須です。

事前設定

TLS証明書

こちらを参考に自己署名証明書を作成します。
こちらを参考に自己署名証明書のルート証明書を信頼します。

Docker

この操作はDockerからHarborを利用する全ホストに必要となります。

こちらを参考にDocker, Docker Composeをインストールします。
こちらを参考にDockerをTLS化します。

Harborの設定

ダウンロードと展開

Harborはコンテナイメージで公開されています。最新バージョンはこちらを参照して下さい。本稿の手順では/opt/harborをHarborのディレクトリとして使用していますが、このディレクトリは任意です。

myadmin@ubuntu:~$ sudo wget -P /opt https://github.com/goharbor/harbor/releases/download/v2.4.2/harbor-offline-installer-v2.4.2.tgz
myadmin@ubuntu:~$ sudo tar xzvf /opt/harbor-offline-installer-v2.4.2.tgz -C /opt
myadmin@ubuntu:~$ sudo rm -f /opt/harbor-offline-installer-v2.4.2.tgz

harbor.yml

Harborの設定ファイルはharbor.ymlです。

デフォルト値

サンプルとしてharbor.yml.tmplが用意されています。コメント行を削除したデフォルト値は下記の通りです。

myadmin@ubuntu:~$ grep -v -e '^\s*#' -e '^\s*$' /opt/harbor/harbor.yml.tmpl
hostname: reg.mydomain.com
http:
  port: 80
https:
  port: 443
  certificate: /your/certificate/path
  private_key: /your/private/key/path
harbor_admin_password: Harbor12345
database:
  password: root123
  max_idle_conns: 100
  max_open_conns: 900
data_volume: /data
trivy:
  ignore_unfixed: false
  skip_update: false
  offline_scan: false
  insecure: false
jobservice:
  max_job_workers: 10
notification:
  webhook_job_max_retry: 10
chart:
  absolute_url: disabled
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor
_version: 2.4.0
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy

設定値

設定例は下記の通りです。基本的に変更すべき個所は僅かです。各ディレクトリはHarborの起動時に自動で作成されます。

myadmin@ubuntu:~$ sudo tee /opt/harbor/harbor.yml <<"EOF"
hostname: harbor.si1230.com
http:
  port: 80
https:
  port: 443
  certificate: /etc/docker/certs.d/si1230.com-docker.cert
  private_key: /etc/docker/certs.d/si1230.com.key
harbor_admin_password: password
database:
  password: password
  max_idle_conns: 100
  max_open_conns: 900
data_volume: /data
trivy:
  ignore_unfixed: false
  skip_update: false
  offline_scan: false
  insecure: false
jobservice:
  max_job_workers: 10
notification:
  webhook_job_max_retry: 10
chart:
  absolute_url: disabled
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor
_version: 2.4.0
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy
EOF

Harborの起動

Harborを起動します。内部的にはDocker Composeを呼び出しています。指定したオプションは、--with-chartmuseum:Helm Chartリポジトリの有効化、--with-trivy:SCANの有効化となります。SCANを有効化するとHarborにアップロードしたコンテナイメージの脆弱性をチェックすることができます。

myadmin@ubuntu:~$ sudo /opt/harbor/prepare
myadmin@ubuntu:~$ sudo /opt/harbor/install.sh --with-chartmuseum --with-trivy

systemd

Harborをsystemdに登録します。

myadmin@ubuntu:~$ sudo tee /etc/systemd/system/harbor.service <<"EOF"
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor

[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose -f /opt/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f /opt/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target
EOF

myadmin@ubuntu:~$ sudo chmod 644 /etc/systemd/system/harbor.service
myadmin@ubuntu:~$ sudo systemctl enable harbor.service

rebootしてHarborが起動することを確認しておきましょう。

myadmin@ubuntu:~$ sudo reboot
myadmin@ubuntu:~$ systemctl status harbor.service

DockerにHarborのクレデンシャルを登録

Harbor(Dockerレジストリ)に対してpull/pushを行う際に認証が必要となります。一度ログインするとクレデンシャルが保存されるため次回からは入力不要です。この操作はDockerからHarborを利用する全ホストに必要となります。

myadmin@ubuntu:~$ docker login harbor.si1230.com

目次に戻る

Docker Harbor プライベートコンテナレジストリ構築

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る