概要
前回 registry でバックエンドに s3 を使ってみました
VMware が提供する harbor も実は registry を使っているので s3 が使えないか試してみました
環境
- CentOS 7.3.1611
- docker 17.03.1-ce
- docker-compose 1.9.0
- harbor 1.1.1
インストーラのダウンロード
wget 'https://github.com/vmware/harbor/releases/download/v1.1.1/harbor-offline-installer-v1.1.1.tgz'
- tar zvxf harbor-offline-installer-v1.1.1.tgz
- cd harbor
- vim harbor.cfg
hostname = 192.168.100.101
バケットの作成
適当に作成しましょう
本記事では前回作成した ap-northeast-1 の cf.hawksnowlog というバケットを使います
s3 の設定
- vim common/templates/registry/config.yml
storage:
s3:
accesskey: your-accesskey
secretkey: your-secretkey
region: ap-northeast-1
bucket: cf.hawksnowlog
という感じです
他にも設定項目はありますが、最低限の項目はこれで OK です
harbor のインストール
- ./install.sh
完了するまで待ちましょう
動作確認
事前に insecure-registry の登録を dockerd に対して行っておきましょう
insecure-registry の登録方法は前回の記事を参考にしてください
- docker pull nginx
- docker tag nginx 192.168.100.101/library/nginx
- docker push 192.168.100.101/library/nginx
push したあとに s3 のコンソールを確認するとバケット配下にイメージが保存されていることが確認できると思います
終了する場合は down しましょう
- docker-compose down
少し気になったこと
上記で問題なく動作すると思いますが少し気になったことがあったので記載しておきます
registry に対して docker push すると以下のパスにイメージ情報が保存されていました
- docker exec -it registry ls storage/docker/registry/v2/repositories/library/
これは storage ドライバに s3 を使った場合でもローカルを使った場合でも同じなのですが、rmi コマンドでイメージを削除した場合でも上記のファイルが残っていました
ちなみに s3 側にもデータ残っていました
rmi は dockerd が参照するイメージへのリンクを削除するだけで、物理的な削除は行わない感じでした
そうするとローカル領域が逼迫していずれ pull できなくなるような気がしました (試していません)
容量を気にしないためにわざわざ s3 を使ったのにこれだと本末転倒かなと思った感じです
ローカル側の領域はキャッシュとして置いているだけで、例えば 1 ヶ月間 pull されていない場合は自動で削除してくれるみたいな挙動をしてくれるのであれば問題ないとは思います
もしくはローカルの領域が逼迫しだしたら勝手にキャッシュを削除してくれるようになっていれば良いのかなと思います
この辺の挙動も本当は試しているといいのだと思いますが、、、
最後に
harbor + s3 を試してみました
harbor のバックエンドは純正の registry なのでストレージドライバなども問題なく使えました
今回は install.sh を実行してインストールする方法を紹介しましたが、harbor は ovf 方式でも提供されています
ovf 方式の場合、設定ファイルが編集できないと s3 を使うのは厳しいかもしれません
ovf 方式の場合に s3 を設定する方法も試してみたいとは思っています
0 件のコメント:
コメントを投稿