2017年3月29日水曜日

VMware 製の docker レジストリ「harbor」を使ってみた

概要

harboar は VMware がオープンソースで開発している docker レジストリです
今回は CentOS 上にインストールし簡単な push まで行ってみました

環境

  • CentOS 7.3.1611
  • harbor 0.5.0
  • docker 17.03
  • docker-compose 1.9.0

事前準備

docker と docker-compose は事前にインストールしておいてください

harbor のインストール

hostname = 192.168.100.101

この IP は作業している CentOS マシンの IP を入力してください
localhost と 127.0.0.1 のローカル用のホスト名、IP では動作しないので注意してください
他にも email や ladp, https などの設定ができるので必要であれば設定してください

  • ./install.sh

でインストールします
一応全ログを記載しておきます

[Step 0]: checking installation environment ...

Note: docker version: 17.03.0

Note: docker-compose version: 1.9.0


[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 nginx
Creating harbor-jobservice

✔ ----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at http://192.168.100.101.
For more details, please visit https://github.com/vmware/harbor .

見て分かる通り harbor はコンテナで動作します
解凍したフォルダ内に docker-compose.yml ファイルも存在しています

完了したら harbor 用のコンテナを確認してみましょう

  • docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                      NAMES
405c46a5cf48        vmware/harbor-jobservice:0.5.0   "/harbor/harbor_jo..."   13 minutes ago      Up 13 minutes                                                  harbor-jobservice
c1e65c00f50d        nginx:1.11.5                     "nginx -g 'daemon ..."   13 minutes ago      Up 13 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx
c62583b09c91        vmware/harbor-ui:0.5.0           "/harbor/harbor_ui"      13 minutes ago      Up 13 minutes                                                  harbor-ui
8e5a36f0268d        library/registry:2.5.0           "/entrypoint.sh se..."   13 minutes ago      Up 13 minutes       5000/tcp                                   registry
667a6045716a        vmware/harbor-db:0.5.0           "docker-entrypoint..."   13 minutes ago      Up 13 minutes       3306/tcp                                   harbor-db
24e21ba0af2c        vmware/harbor-log:0.5.0          "/bin/sh -c 'crond..."   13 minutes ago      Up 13 minutes       0.0.0.0:1514->514/tcp                      harbor-log

こんな感じで起動していれば OK です

試してみる、その前に

dockerd のオプションに --insecure-registry というオプションがあります
これに今回構築した harbor の IP を追加する必要があります
そうしないと Error response from daemon: Get https://192.168.100.101/v1/users/: dial tcp 192.168.100.101:443: getsockopt: connection refused と言われて怒られます

  • vim /etc/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --insecure-registry 192.168.100.101
  • systemctl daemon-reload
  • systemctl restart docker

で registry が http でも試すことができます

試してみる

  • docker login 192.168.100.101
Username: admin
Password: Harbar12345
Login Succeeded

でログインできます
パスワードはデフォルトです
この設定は harbor.cfg で変更することができます
では実際に registry にイメージを登録してみます

  • docker pull alpine
  • docker tag alpine 192.168.100.101/library/alpine
  • docker push 192.168.100.101/library/alpine

でイメージを登録することができます
harbor にはデフォルトで library というプロジェクトが用意されているのでそれを使っています
それ以外のプロジェクト名をデフォルトで指定すると push できません

UI で確認してみる

harbor にはデフォルトで UI がついています
ブラウザで http://192.168.100.101 にアクセスしてみましょう
ユーザ名とパスワードは先程のデフォルトのものになります

するとプロジェクト「library」があることが確認できると思います
選択すると先程 push した alpine のイメージがあると思います
first_vmware_harbor1.png

別のプロジェクトに対して push したい場合はここでプロジェクトを作成後 push してください

最後に

VMware の harbor を試してみました
実は内部的には dockerhub で公開されている docker 純正の registry を使っています
それに UI やログ置き場、ジョブワーカー、ユーザ管理、メール送信などの機能がデフォルトで用意されている感じになります

今回は簡単に試しただけなので、いろいろと触ったら Tips 的なのも別途紹介したいと思います

参考サイト

0 件のコメント:

コメントを投稿