焼売飯店

RubyとかJSとか

Docker HubにイメージをPushしてみる

SinatraアプリのHello world on Docker with Alpineの続きです。

前書き

前回作ったSinatraアプリのコンテナを、Amazon EC2 Container Services (以下、ECS) にデプロイ出来るようにしたいと思います。 ECSから自分のイメージを使えるようにするためには、どこかしらのレジストリにイメージを配置する必要があります。

イメージの置き場所について

ECSから読めればどこでも良い(自前のリポジトリも可?)ですが、 最も一般的なのはAmazon本家のEC2 Container Registry(ECR)です。

今回は、手軽に無料で使えるDocker Hubを使いますが、無料では公開リポジトリしか置けないですし、 ECRにイメージを置いておけば、同一リージョン内からのイメージのpull、すなわちEC2へのデプロイで料金が発生しないので、ECSを使う上では非常にお得です。

ECRの料金は次の項目で発生します。

  • ストレージ料金 => 0.10 USD/GB/月
  • イン(Push) => 0円
  • アウト(同一リージョン外からのPull) => 最初の1GB無料、それ以降 0.140 USD/GB (月に10TBまでの場合)

気軽に試す分には、維持費のかからないDocker Hubでもいいかなと思います。

手順

1.Docker Hubにリポジトリを作る

今回は、syumai/sinatra-alpineとしました。

f:id:f_syumai:20170113023005p:plain

2.タグ付きでビルド

docker build -t syumai/sinatra-alpine:0.1.0 ./

3.Docker Hubにログイン

docker login
(ユーザー名、パスワードの入力)

4.Pushする

docker push syumai/sinatra-alpine:0.1.0

Push完了!

Pushしたイメージを確認する

Pushしたイメージは、Docker Hub上の自分のページに、あれ、見つからない…。 でもdocker pull syumai/sinatra-alpine:0.1.0は動くので、Pushは成功しているっぽいです。 どっか間違ったのか時間差があるのでしょうか…。また明日確認してみます。

次回は、こちらのアップロードしたイメージ or ECRを使ってECSにデプロイしてみます。

追記(2017/1/14)

6時間後くらいに見たら、ちゃんとDocker Hubのページに反映されていました。