PrivateなDocker Registryが欲しい時、昔は自分で建ててたけど今回はGoogle Container Registryを使った。 楽ちんでした。
Private Docker Registry比較
Docker Hub
一応オフィシャルな老舗サービス。 Dockerイメージを使うといったらたいていの場合はここからpublicなイメージを落として使うことになる。
Privateリポジトリも1つまでなら無料。タグを頑張って使い分ければ好きなだけPrivateイメージをpushできる気もするけど、さすがに運用がつらそう。 複数個のPrivateリポジトリを使いたければ有料プランが必要で、Privateリポジトリ5つで月7ドルとなる。昔のGitHubみたいな料金体系。
GitHubと連携して自動でビルドもできるし、Docker本家のサービスってところがいいところ。
Docker Registry
https://hub.docker.com/_/registry/
Docker RegistryはDockerイメージが公開されていて自分で構築することもできる。
今だとほとんどの場合は運用が辛いだけなので選択肢にはならない。 どうしてもイメージを外に出したくないとか、既に大規模なインフラ持っててコストを安くしたいってときの選択肢。
昔これを使ってたときは証明書まわりとかストレージまわりがめんどくさかった。 ストレージにS3やGCSも使えるけど、その場合は素直に外のサービスを使ったほうがいい。
Amazon EC2 Container Registry
https://aws.amazon.com/jp/ecr/
AWSのPrivate Container Registry。 料金はストレージ料金と転送料金の従量課金。
ストレージは月0.10ドル/GB。 転送料は例によってややこしいけど、月0.14ドル/GBぐらいかと。
AWSの指示に従ってdocker
コマンドでログインすれば使えるようになる。
AWS内でイメージをビルドしてECRにpushするにはCodeBuildを使うっぽい。
Google Container Registry
https://cloud.google.com/container-registry/
GCPのPrivate Container Registry。 料金はGCSの料金のみ。
ストレージはデフォルトでMulti-Regionalが選択されるので、月0.026ドル/GB。 転送料は月0.12ドル/GB。
なので料金はECRより安いはず。
GCRはgcloud
コマンドで操作することが推奨されているが、ドキュメントに従ってログインすればdocker
コマンドでも使えるようになる。
例えば、JSONキーファイルを使ってログインする場合はこんな感じ。
docker login -e [email protected] -u _json_key -p "$(cat keyfile.json)" https://asia.gcr.io
おわりに
今回は料金のやすさやお手軽さなどからGCRを選択した。 使いやすくて引っかかるところもなかったし、push/pullもはやいので満足している。