VMwareによって提供されているオープンソースのPrivate Docker Registyです。
各々の機能を持ったコンテナを複数組み合わせる事で、コンテナイメージの登録だけではなく様々な機能を実現しています。公式サイトでは以下の機能を特徴に挙げています。
- ロールベースのアクセス制御
- ポリシーベースのイメージレプリケーション
- LDAP/ADのサポート
- イメージの削除とガベージコレクション
- グラフィカルなユーザポータル(WebUI)
- リポジトリへの操作記録
- RESTful APIの提供
- 簡単デプロイ
Dockerによって提供されている既存のregistryコンテナ(Private Docker Registryを構築出来る)では、コンテナイメージの登録/利用/削除などの基本的な操作しか出来ない一方で、Harborでは様々な事が出来るようになっています。
例えば、複数ユーザやプロジェクトから共同で利用する場合には、"ロールベースのアクセス制御"によって、各ユーザやプロジェクトに閉じたコンテナイメージのリポジトリを提供する事が出来ます。つまり、他ユーザやプロジェクト毎に公開するコンテナイメージを制御できます。また、"ポリシーベースのイメージレプリケーション"では、サーバを跨いだ複数のレジストリインスタンスにイメージを複製する事によって、Load BalancingやHigh Availabilityを実現する事が出来ます。
"LDAP/ADのサポート"も既存環境のユーザを再利用できる点で魅力的な機能の一つですし、何よりもWebUIがあるというのは便利ですね。"リポジトリへの操作記録"では、WebUI上から誰が何をしたかが分かるので責任範囲を明確にしたり、アカン人を明るみに出す事が出来ます(恐ろしい)
という事でHarborを使ってSecure Private Docker Registryを構築してみます。
※ 今回は最低限の設定ファイルの修正で構築しているので、実環境では色々なパラメータを修正する必要があります。
特に今回はオレオレ証明書を使用しているので、よりセキュアな環境で構築する必要があれば、SymantecSSL (https://www.symantec.com/ja/jp/page.jsp?id=always-on-ssl) や CyberTrust (https://www.cybertrust.ne.jp) 等のセキュリティサービス事業者から証明書を購入するのが良いかと思われます。
##2. Pre-requirement
- Ubuntu 16.04 LTSを使用しました (Vagrantで構築)
# Check Version
ubuntu@ubuntu-xenial:~$ uname -a
Linux ubuntu-xenial 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@ubuntu-xenial:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
# Check Network Interface
ubuntu@ubuntu-xenial:~$ ifconfig
enp0s3 Link encap:Ethernet HWaddr 02:e4:5b:1a:6e:ce
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::e4:5bff:fe1a:6ece/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:60091 errors:0 dropped:0 overruns:0 frame:0
TX packets:29134 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:46640854 (46.6 MB) TX bytes:1876488 (1.8 MB)
enp0s8 Link encap:Ethernet HWaddr 08:00:27:32:8e:64
inet addr:192.168.33.10 Bcast:192.168.33.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe32:8e64/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:328 (328.0 B) TX bytes:866 (866.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
- Harborを動作させる上で必要なソフトウェアをインストールします
# Install Python2.x
ubuntu@ubuntu-xenial:~$ sudo apt-get update
ubuntu@ubuntu-xenial:~$ sudo apt-get install -y python
# Check Python Version
ubuntu@ubuntu-xenial:~$ python --version
Python 2.7.12
# Install Docker
ubuntu@ubuntu-xenial:~$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
ubuntu@ubuntu-xenial:~$ sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
ubuntu@ubuntu-xenial:~$ sudo apt-get update
ubuntu@ubuntu-xenial:~$ sudo apt-get install -y docker-engine
# Check Docker Version
ubuntu@ubuntu-xenial:~$ sudo docker version
Client:
Version: 17.03.0-ce
API version: 1.26
Go version: go1.7.5
Git commit: 60ccb22
Built: Thu Feb 23 11:02:43 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.0-ce
API version: 1.26 (minimum version 1.12)
Go version: go1.7.5
Git commit: 60ccb22
Built: Thu Feb 23 11:02:43 2017
OS/Arch: linux/amd64
Experimental: false
# Install Docker Compose
ubuntu@ubuntu-xenial:~$ sudo curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
ubuntu@ubuntu-xenial:~$ sudo chmod +x /usr/local/bin/docker-compose
# Check Docker Compose Version
ubuntu@ubuntu-xenial:~$ docker-compose --version
docker-compose version 1.11.2, build dfed245
- 今回は証明書のサブジェクト名をIPアドレスで指定するのでその為の設定を追加します
# /etc/ssl/openssl.cnf内の[v3_ca]セクションに下記を追加
ubuntu@ubuntu-xenial:~$ sudo vim /etc/ssl/openssl.cnf
[ v3_ca ]
subjectAltName=IP:192.168.33.10
##3. Install Harbor
- Harborの公式サイトから最新のインストーラをダウンロードします
ubuntu@ubuntu-xenial:~$ wget https://github.com/vmware/harbor/releases/download/0.5.0/harbor-online-installer-0.5.0.tgz
ubuntu@ubuntu-xenial:~$ tar zxvf harbor-online-installer-0.5.0.tgz
harbor/
harbor/install.sh
harbor/LICENSE
harbor/NOTICE
harbor/docker-compose.yml
harbor/common/
harbor/common/templates/
harbor/common/templates/ui/
harbor/common/templates/ui/private_key.pem
harbor/common/templates/ui/env
harbor/common/templates/ui/app.conf
harbor/common/templates/nginx/
harbor/common/templates/nginx/nginx.https.conf
harbor/common/templates/nginx/nginx.http.conf
harbor/common/templates/db/
harbor/common/templates/db/env
harbor/common/templates/jobservice/
harbor/common/templates/jobservice/env
harbor/common/templates/jobservice/app.conf
harbor/common/templates/registry/
harbor/common/templates/registry/root.crt
harbor/common/templates/registry/config.yml
harbor/prepare
harbor/harbor.cfg
- オレオレ証明書を作成します
# Create Directory for Certificate and Change Directory
ubuntu@ubuntu-xenial:~$ mkdir cert
ubuntu@ubuntu-xenial:~$ cd cert
# Create Certificate(証明書と鍵の名前は適宜変更)
# Input Common Name only at this time
ubuntu@ubuntu-xenial:~/cert$ openssl req -sha256 -x509 -days 365 -nodes -newkey rsa:4096 -keyout 192.168.33.10.key -out 192.168.33.10.crt
Generating a 4096 bit RSA private key
....................................................................++
.............................................................................................................................++
writing new private key to '192.168.33.10.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:192.168.33.10
Email Address []:
- Harborの設定ファイルを修正します
# Change Directory and Modify harbor.cfg
ubuntu@ubuntu-xenial:~$ cd harbor
ubuntu@ubuntu-xenial:~/harbor$ vim harbor.cfg
< hostname = reg.mydomain.com
> hostname = 192.168.33.10
< ui_url_protocol = http
> ui_url_protocol = https
< ssl_cert = /data/cert/server.crt
> ssl_cert = /home/ubuntu/cert/192.168.33.10.crt
< ssl_cert_key = /data/cert/server.key
> ssl_cert_key = /home/ubuntu/cert/192.168.33.10.key
- Harbor本体をインストールします
# 正常にインストールが完了すれば最後に
# Harbor has been installed and started successfullyと表示されます
# また、現在ではインストール完了と同時にHarbor用のコンテナ群が起動されるようです
ubuntu@ubuntu-xenial:~/harbor$ sudo ./install.sh
[Step 0]: checking installation environment ...
Note: docker version: 17.03.0
Note: docker-compose version: 1.11.2
[Step 1]: preparing environment ...
generated and saved secret key
Generated configuration file: ./common/config/nginx/nginx.conf
Generated configuration file: ./common/config/ui/env
Generated configuration file: ./common/config/ui/app.conf
Generated configuration file: ./common/config/registry/config.yml
Generated configuration file: ./common/config/db/env
Generated configuration file: ./common/config/jobservice/env
Generated configuration file: ./common/config/jobservice/app.conf
Generated configuration file: ./common/config/ui/private_key.pem
Generated configuration file: ./common/config/registry/root.crt
The configuration files are ready, please use docker-compose to start the service.
[Step 2]: checking existing instance of Harbor ...
[Step 3]: starting Harbor ...
Creating network "harbor_default" with the default driver
Pulling log (vmware/harbor-log:0.5.0)...
0.5.0: Pulling from vmware/harbor-log
93b3dcee11d6: Pull complete
5c14e4bdfb0b: Pull complete
e4dee8a574ca: Pull complete
64897311fadc: Pull complete
9b18f82d0181: Pull complete
Digest: sha256:81db268fa32ed35274f88f0e9f6e8c8fe36fdfe3247a7c75cef3d526814755ad
Status: Downloaded newer image for vmware/harbor-log:0.5.0
Pulling ui (vmware/harbor-ui:0.5.0)...
0.5.0: Pulling from vmware/harbor-ui
93b3dcee11d6: Already exists
a91de92f52f5: Pull complete
341612b46e3b: Pull complete
c1a53f812656: Pull complete
9a9aa413559a: Pull complete
e1b377650dfc: Pull complete
be5517028022: Pull complete
726f4e0b4799: Pull complete
08639f4ec97a: Pull complete
Digest: sha256:677776af19c774f665565486ef0ec3ab37e55c6738a471942e3ea841b3e1821c
Status: Downloaded newer image for vmware/harbor-ui:0.5.0
Pulling mysql (vmware/harbor-db:0.5.0)...
0.5.0: Pulling from vmware/harbor-db
43c265008fae: Pull complete
d7abd54d3b34: Pull complete
92b527830a1b: Pull complete
44839710d611: Pull complete
3828a16bed5c: Pull complete
fb91763f6b4e: Pull complete
892bfb27c685: Pull complete
02874ec7a2dc: Pull complete
861c1296cc0d: Pull complete
d611998d5598: Pull complete
09037dc5a941: Pull complete
448973dd2180: Pull complete
c0a51ede01de: Pull complete
54c4b53ba168: Pull complete
Digest: sha256:4bc45566b8aab9288e76ac8a36e604aecf05ba9b25e22f5a9cd5e9686978b78b
Status: Downloaded newer image for vmware/harbor-db:0.5.0
Pulling jobservice (vmware/harbor-jobservice:0.5.0)...
0.5.0: Pulling from vmware/harbor-jobservice
93b3dcee11d6: Already exists
a91de92f52f5: Already exists
cdeb4de41efe: Pull complete
ce3594a70659: Pull complete
Digest: sha256:9c2d927f6e59fafcc930a5f738d713bde7d101cecd4e110a570a7b499d69ff68
Status: Downloaded newer image for vmware/harbor-jobservice:0.5.0
Pulling registry (library/registry:2.5.0)...
2.5.0: Pulling from library/registry
e110a4a17941: Pull complete
2ee5ed28ffa7: Pull complete
d1562c23a8aa: Pull complete
06ba8e23299f: Pull complete
802d2a9c64e8: Pull complete
Digest: sha256:1b68f0d54837c356e353efb04472bc0c9a60ae1c8178c9ce076b01d2930bcc5d
Status: Downloaded newer image for registry:2.5.0
Pulling proxy (nginx:1.11.5)...
1.11.5: Pulling from library/nginx
386a066cd84a: Pull complete
7bdb4b002d7f: Pull complete
49b006ddea70: Pull complete
Digest: sha256:9038d5645fa5fcca445d12e1b8979c87f46ca42cfb17beb1e5e093785991a639
Status: Downloaded newer image for nginx:1.11.5
Creating harbor-log
Creating harbor-db
Creating registry
Creating harbor-ui
Creating harbor-jobservice
Creating nginx
✔ ----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at https://192.168.33.10.
For more details, please visit https://github.com/vmware/harbor .
- Harbor用のコンテナが正常に起動しているかを確認します
ubuntu@ubuntu-xenial:~/harbor$ sudo docker-compose top
harbor-db
UID PID PPID C STIME TTY TIME CMD
---------------------------------------------------------------------------------------------
999 5424 5346 0 11:42 ? 00:00:01 mysqld --init-file=/tmp/mysql-first-time.sql
harbor-jobservice
UID PID PPID C STIME TTY TIME CMD
---------------------------------------------------------------------------
root 5697 5674 0 11:42 ? 00:00:00 /harbor/harbor_jobservice
harbor-log
UID PID PPID C STIME TTY TIME CMD
----------------------------------------------------------------------------------------------------------------
root 5160 5142 0 11:42 ? 00:00:00 /bin/sh -c crond && rm -f /var/run/rsyslogd.pid && rsyslogd -n
root 5206 5160 0 11:42 ? 00:00:00 crond
root 5208 5160 0 11:42 ? 00:00:00 rsyslogd -n
harbor-ui
UID PID PPID C STIME TTY TIME CMD
-------------------------------------------------------------------
root 5412 5318 0 11:42 ? 00:00:00 /harbor/harbor_ui
nginx
UID PID PPID C STIME TTY TIME CMD
----------------------------------------------------------------------------------------------
root 5740 5714 0 11:42 ? 00:00:00 nginx: master process nginx -g daemon off;
syslog 5824 5740 0 11:42 ? 00:00:00 nginx: worker process
syslog 5825 5740 0 11:42 ? 00:00:00 nginx: worker process
registry
UID PID PPID C STIME TTY TIME CMD
-----------------------------------------------------------------------------------------
root 5361 5271 0 11:42 ? 00:00:00 registry serve /etc/registry/config.yml
これでHarborのインストールは一通り完了です。
次はWebUIにアクセスし、プロジェクトの作成等を行っていきたいと思います。
##4. Operation on WebUI
Login and Create User
- WebUI (https://[YOUR_IP_ADDRESS]) にアクセスします(今回は https://192.168.33.10/ です)
-
Admin
ユーザでログインしてみます。初期パスワードはHarbor12345
です。
上図のようなダッシュボードが表示されれば成功です。特に操作を行っていないので、真っ新なページになっていますが、各種操作を実行するとログが表示されていくようになります。
- 次に
User
ユーザを作成してみます。作成するには上部のHarborロゴの隣にあるユーザ情報をクリックし、Add User
を選択します。
- 以下のように適宜必要な項目を入力し、
Add
を選択します。成功するとNew user added successfully
といったメッセージが表示されます。
Create and Check Project
- ダッシュボードの画面中部にある
New Project
を選択します。適当なプロジェクト名(今回はfirst-project
を入力し、Public
にチェックを入れて、Save
を選択します。すると、以下のようにダッシュボードに新たなプロジェクトが表示されます。
- ダッシュボードのトップ画面に操作ログが追記されている事が確認できると思います。
- 次に先ほど作成した
User
ユーザから、プロジェクトがどのように見えるかを確認します。
上部メニューからProjects
を選択し、画面中部に表示されるPublic Projects
を選択すると、先ほど作成されたプロジェクト名が見えると思います。
- 加えて同プロジェクトの公開範囲を
Publicity
をOFF
にし、再度User
ユーザからどのように見えるかを確認します。結果はお察しの通り、当該プロジェクトの情報が見えなくなっていると思います。(余談ですが、Admin
ユーザからは全ユーザのプロジェクトを閲覧する事が出来、操作する事も出来ます。また、プロジェクト名の右の方にあるゴミ箱アイコンをクリックするとプロジェクトを削除する事ができます。)
Operation in Project
- プロジェクト名を選択すると、画面中央右部に Repositories, Replication(Admin権限のみ閲覧可), Users, Logsといった項目が表示され、各種操作を行う事が出来ます。
Admin Operation
-
Admin
権限を持つユーザは、画面上部にAdmin Options
が表示されると思います。このAdmin Options
ではユーザ管理からレプリケーションの設定等を行う事が出来ますが今回は割愛します。
以上で、WebUIからの操作説明は終わりです。インタフェースも操作方法も簡潔ですね。
レプリケーションの方法やユーザ制御の細かい設定等は割愛しましたが、とても便利な機能なので活用していきたいところです。
それでは、次は実際にプロジェクトにイメージをプッシュしていきたいと思います。
##5. Push Container Image to Harbor Project
- Harborが動作しているサーバ上で作成したオレオレ証明書をコピーします。証明書はHarborを利用する全クライアント上にコピーする必要があります。
# Harborが動作しているサーバ上にあるオレオレ証明書の内容をコピーします
ubuntu@ubuntu-xenial:~/harbor$ cat /home/ubuntu/cert/192.168.33.10.crt
# Dockerの設定用ディレクトリに証明書を格納するディレクトリを作成し、オレオレ証明書の内容を別の名前で保存します
ubuntu@ubuntu-xenial:~/harbor$ sudo mkdir -p /etc/docker/certs.d/192.168.33.10
ubuntu@ubuntu-xenial:~/harbor$ sudo vim /etc/docker/certs.d/192.168.33.10/ca.crt
# 上記で作成したca.crtのシンボリックリンクをOS内の証明書を格納するディレクトリに作成した後に証明書の情報を更新します
ubuntu@ubuntu-xenial:~/harbor$ sudo ln -s /etc/docker/certs.d/192.168.33.10/ca.crt /usr/local/share/ca-certificates/192.168.33.10.crt
ubuntu@ubuntu-xenial:~/harbor$ sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
- DockerCLIからHarborにログインします。今回は
Username
はAdmin
、Password
はHarbor12345
でログインしてみます。成功するとLogin Succeeded
という文字が出力されるはずです。
ubuntu@ubuntu-xenial:~/harbor$ sudo docker login 192.168.33.10
Username: Admin
Password:
Login Succeeded
- 適当なコンテナイメージをローカルにプルし、Harborにそのイメージをプッシュしてみます。
# コンテナイメージubuntu:xenialをローカルにプルします
ubuntu@ubuntu-xenial:~$ sudo docker pull ubuntu:xenial
xenial: Pulling from library/ubuntu
d54efb8db41d: Pull complete
f8b845f45a87: Pull complete
e8db7bf7c39f: Pull complete
9654c40e9079: Pull complete
6d9ef359eaaa: Pull complete
Digest: sha256:dd7808d8792c9841d0b460122f1acf0a2dd1f56404f8d1e56298048885e45535
Status: Downloaded newer image for ubuntu:xenial
# 正しくコンテナイメージをプル出来ているかを確認
ubuntu@ubuntu-xenial:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu xenial 0ef2e08ed3fa 3 weeks ago 130 MB
vmware/harbor-log 0.5.0 eebc987a891b 3 months ago 191 MB
vmware/harbor-jobservice 0.5.0 995368e96860 3 months ago 169 MB
vmware/harbor-ui 0.5.0 232a8664541a 3 months ago 233 MB
vmware/harbor-db 0.5.0 84c4ce8e9b6c 3 months ago 327 MB
nginx 1.11.5 05a60462f8ba 4 months ago 181 MB
registry 2.5.0 c6c14b3960bd 8 months ago 33.3 MB
# コンテナイメージubuntu:xenialにタグ付けします
# sudo docker tag <ローカルイメージ名> <イメージ名:タグ名> でタグ付けすることができます。
# 自作のコンテナイメージをビルドする際にタグ付けしたい場合は、
# sudo docker build -t 192.168.33.10/first-project/my-image:my-tag . になります。
ubuntu@ubuntu-xenial:~$ sudo docker tag ubuntu:xenial 192.168.33.10/first-project/my-ubuntu:0.0.1
# 正しくコンテナイメージにタグ付け出来ているかを確認
ubuntu@ubuntu-xenial:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.33.10/first-project/my-ubuntu 0.0.1 0ef2e08ed3fa 3 weeks ago 130 MB
ubuntu xenial 0ef2e08ed3fa 3 weeks ago 130 MB
vmware/harbor-log 0.5.0 eebc987a891b 3 months ago 191 MB
vmware/harbor-jobservice 0.5.0 995368e96860 3 months ago 169 MB
vmware/harbor-ui 0.5.0 232a8664541a 3 months ago 233 MB
vmware/harbor-db 0.5.0 84c4ce8e9b6c 3 months ago 327 MB
nginx 1.11.5 05a60462f8ba 4 months ago 181 MB
registry 2.5.0 c6c14b3960bd 8 months ago 33.3 MB
# 最後にHarborにコンテナイメージをプッシュします
ubuntu@ubuntu-xenial:~$ sudo docker push 192.168.33.10/first-project/my-ubuntu
The push refers to a repository [192.168.33.10/first-project/my-ubuntu]
56827159aa8b: Pushed
440e02c3dcde: Pushed
29660d0e5bb2: Pushed
85782553e37a: Pushed
745f5be9952c: Pushed
0.0.1: digest: sha256:6b079ae764a6affcb632231349d4a5e1b084bece8c46883c099863ee2aeb5cf8 size: 1357
これで今回構築したHarborにコンテナイメージをプッシュする事が出来ました。
次は実際にプッシュ出来ているかどうかをWebUI上から確認してみたいと思います。
##6. Check on WebUI
- WebUI上から
Admin
ユーザでログインし、上部メニューのProjects
内をクリックし、first-project
を選択します。すると、先ほどの何も表示されていなかったプロジェクトに、コンテナイメージが追加されている事が分かります。
- 上記のコンテナイメージ名を選択すると、より詳細な情報が表示されます。
##7. Create Container by Using Container Image on Harbor
- それでは最後にHarbor上にプッシュしたコンテナイメージを用いて、コンテナを作成してみます。
# 確認のため、ローカルに元々あるコンテナイメージの情報を削除する
ubuntu@ubuntu-xenial:~$ sudo docker rmi 192.168.33.10/first-project/my-ubuntu:0.0.1
Untagged: 192.168.33.10/first-project/my-ubuntu:0.0.1
Untagged: 192.168.33.10/first-project/my-ubuntu@sha256:6b079ae764a6affcb632231349d4a5e1b084bece8c46883c099863ee2aeb5cf8
ubuntu@ubuntu-xenial:~$ sudo docker rmi ubuntu:xenial
Untagged: ubuntu:xenial
Untagged: ubuntu@sha256:dd7808d8792c9841d0b460122f1acf0a2dd1f56404f8d1e56298048885e45535
Deleted: sha256:0ef2e08ed3fabfc44002ccb846c4f2416a2135affc3ce39538834059606f32dd
Deleted: sha256:0d58a35162057295d273c5fb8b7e26124a31588cdadad125f4bce63b638dddb5
Deleted: sha256:cb7f997e049c07cdd872b8354052c808499937645f6164912c4126015df036cc
Deleted: sha256:fcb4581c4f016b2e9761f8f69239433e1e123d6f5234ca9c30c33eba698487cc
Deleted: sha256:b53cd3273b78f7f9e7059231fe0a7ed52e0f8e3657363eb015c61b2a6942af87
Deleted: sha256:745f5be9952c1a22dd4225ed6c8d7b760fe0d3583efd52f91992463b53f7aea3
# 関連するコンテナイメージがローカルに無い事を確認する
ubuntu@ubuntu-xenial:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vmware/harbor-log 0.5.0 eebc987a891b 3 months ago 191 MB
vmware/harbor-jobservice 0.5.0 995368e96860 3 months ago 169 MB
vmware/harbor-ui 0.5.0 232a8664541a 3 months ago 233 MB
vmware/harbor-db 0.5.0 84c4ce8e9b6c 3 months ago 327 MB
nginx 1.11.5 05a60462f8ba 4 months ago 181 MB
registry 2.5.0 c6c14b3960bd 8 months ago 33.3 MB
# Harborにプッシュしたコンテナイメージでコンテナを作成、そしてアタッチしてみる。
ubuntu@ubuntu-xenial:~$ sudo docker run --rm -it 192.168.33.10/first-project/my-ubuntu:0.0.1 /bin/bash
Unable to find image '192.168.33.10/first-project/my-ubuntu:0.0.1' locally
0.0.1: Pulling from first-project/my-ubuntu
fec6b243e075: Pull complete
190e0e9a3e79: Pull complete
0d79cf192e4c: Pull complete
38398c307b51: Pull complete
356665655a72: Pull complete
Digest: sha256:6b079ae764a6affcb632231349d4a5e1b084bece8c46883c099863ee2aeb5cf8
Status: Downloaded newer image for 192.168.33.10/first-project/my-ubuntu:0.0.1
root@413a97aa7dcc:/# Succeeded!
# ローカルにHarbor上のコンテナイメージが存在するかを確認する
ubuntu@ubuntu-xenial:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.33.10/first-project/my-ubuntu 0.0.1 0ef2e08ed3fa 3 weeks ago 130 MB
vmware/harbor-log 0.5.0 eebc987a891b 3 months ago 191 MB
vmware/harbor-jobservice 0.5.0 995368e96860 3 months ago 169 MB
vmware/harbor-ui 0.5.0 232a8664541a 3 months ago 233 MB
vmware/harbor-db 0.5.0 84c4ce8e9b6c 3 months ago 327 MB
nginx 1.11.5 05a60462f8ba 4 months ago 181 MB
registry 2.5.0 c6c14b3960bd 8 months ago 33.3 MB
##8. 終わりに
以上で、Harborを使ったちょっぴりSecureなPrivate Docker Registryの構築は終わりです。
HarborのインストールからWebUIの使い方までをさらっと書いてみましたが、私自身まだよく理解していない箇所もあるので、これからも色々と調べていきたいと思います。こういった便利なOSSは積極的に使っていきたいですね。