2017年5月15日月曜日

docker rgistry のイメージの保存先に s3 を使ってみた

環境

  • 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_with_registry1.png

s3_with_registry2.png

また、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 となります
s3_with_registry3.png
とりあえず最低限上記の設定があれば動作すると思います

テスト

適当にイメージをダウンロードして、自分のレジストリに登録します

  • docker pull alpine
  • docker tag alpine localhost:5000/alpine
  • docker push localhost:5000/alpine

s3 にアップロードするので少しつまる感じはありますがすぐに終わると思います
完了したら s3 を確認してみましょう
ちゃんとイメージがアップロードされていると思います
s3_with_registry3.png

最後に

registry の s3 driver を使ってイメージ置き場を s3 にしてみました
結構簡単に使える印象はありました

一点だけ
試している段階で以下のエラーに遭遇しました

{"errors":[{"code":"UNAVAILABLE","message":"service unavailable","detail":"health check failed: please see /debug/health"}]}

始め REGISTRY_STORAGE_S3_ROOTDIRECTORY を好きなパスで指定していたのですが、これを指定しないようにしたらエラーが出なくなりました
おそらくコンテナから指定したパスにアクセスできる権限がなく上記のエラーになったんだと思います (すいません詳細に調べていないので間違っているかもしれません)

参考サイト

0 件のコメント:

コメントを投稿