環境
- macOS 10.12.4
- docker 17.05
- docker registry 2.6.1
概要
docker registry には storage driver という仕組みがありローカルのファイルシステムの他に s3, gce, azure などのクラウドストレージを使うことができます
今回はその中の s3 storage driver を使って s3 に image を保存してみました
イメージの取得
- docker pull registry
s3 にバケットを作成する
AWS コンソールから作成しましょう
リージョンや名前は好きなもので OK です
また、s3 にアクセス可能なパーミッションを持つユーザのアクセスキーとシークレットキーの準備しておいてください
必要なパーミッションはこちらです
コンテナを起動する
docker run -d \
--name registry \
-p 5000:5000 \
-e REGISTRY_STORAGE=s3 \
-e REGISTRY_STORAGE_S3_ACCESSKEY=your-accesskey \
-e REGISTRY_STORAGE_S3_SECRETKEY=your-secretkey \
-e REGISTRY_STORAGE_S3_BUCKET=cf.hawksnowlog \
-e REGISTRY_STORAGE_S3_REGION=ap-northeast-1 \
registry
-e
で指定している環境変数にはパターンがあり REGISTRY_varialbes というパターンで指定します
そして variables の一覧はこちらにあります
例えば storage: -> s3: を指定したい場合は REGISTRY_STORAGE=s3 とします
storege: -> s3: -> accesskey: を指定する環境変数は REGISTRY_STORAGE_S3_ACCESSKEY となります
とりあえず最低限上記の設定があれば動作すると思います
テスト
適当にイメージをダウンロードして、自分のレジストリに登録します
- docker pull alpine
- docker tag alpine localhost:5000/alpine
- docker push localhost:5000/alpine
s3 にアップロードするので少しつまる感じはありますがすぐに終わると思います
完了したら s3 を確認してみましょう
ちゃんとイメージがアップロードされていると思います
最後に
registry の s3 driver を使ってイメージ置き場を s3 にしてみました
結構簡単に使える印象はありました
一点だけ
試している段階で以下のエラーに遭遇しました
{"errors":[{"code":"UNAVAILABLE","message":"service unavailable","detail":"health check failed: please see /debug/health"}]}
始め REGISTRY_STORAGE_S3_ROOTDIRECTORY を好きなパスで指定していたのですが、これを指定しないようにしたらエラーが出なくなりました
おそらくコンテナから指定したパスにアクセスできる権限がなく上記のエラーになったんだと思います (すいません詳細に調べていないので間違っているかもしれません)
0 件のコメント:
コメントを投稿