AWS
docker
ECS
docker-compose
ECR

Docker100本ノック Dockerレジストリを利用する(EC2 Container Registry)

More than 1 year has passed since last update.

前回の記事
Docker(compose)初学者が困ったときに約立つコマンド集

でDocker環境が出来上がりました。
メンバーと共同で開発するのでDockerイメージの配布方法について考えなければなりません。

最初はdocker-{プロエジェクト名}のリポジトリからREADMEでこれ実行してね。
と配布したのですが、docker何それ?美味しいの?人だと億劫さを感じるかもしれません。
もっとスマートな方法ないかなぁ と思っていたら、

あ、AWSつかってるからECR(EC2 Container Registry)
あるじゃん

と思い、プロジェクトメンバーには

docker-compose pull
docker-compose up -d

だけで環境を持ってこれる世界を作ったときのメモになります。

対象者

環境

  • MacOSX ElCapitan (HostOS)
    • 10.11.6
  • Docker for Mac

事前準備に必要なもの

  • AWS CLI
    • 入っていない人は何も考えずに pip install awscli と打とう。
    • ECRが比較的新しいサービスの為コマンドを打っていてそんなオプションがないとエラーがかえってきたら pip install awscli --upgrade を実行してみてください

Dockerレジストリとは?

コンテナのイメージを保存できるものです。
有名なのはDocker Hubですね。
ただ自分の場合は

  • すでにAWSを使っている。
  • 試験段階でまだDockerHubに課金するほど、使い切れる自信はない
  • Dockerを導入するために上長を口説き落とすのが面倒

なので今回はECR(EC2 Container Registry)を使ってDockerレジストリを試してみました。

ECRの料金について

ECR料金

350TB 使っても月額0.050$なのでDockerレジストリだけなら気軽に使えそうです。

では試してみましょう

ECSサービスに行く

図のようにリポジトリからリポジトリの作成を押しましょう

ECSトップ

リポジトリを作る

ECSリポジトリ作成画面

自分はRailsの環境のイメージなので

{プロジェクト名}-rails

みたいな感じででつけました。

Dockerイメージのレジストリのpush方法を見る

ECR push方法

このようにECRのイメージのpush方法が出てきます。
これの通りにやるだけです。

一点だけ注意が必要でawscliが古いとエラーになります。
(ちょっとどのバージョンからエラーとかは調べていません。)

エラーが出た方はawscliをアップグレードしておきましょう。

pip install awscli --upgrade

Pushしたら反映されているか確認

Dockerイメージをpushするとこんな感じになります

ECR push

反映されているのがわかりますね。

Docker-composeに記載する

あとは使っているdocker-composeにこんな風に記載するだけです。

docker-compose.yml
version: '3'

services:
  rails:
    image: "xxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/{リポジトリ名}:latest"
  mysql:
    image: "xxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/{リポジトリ名}:latest"

上記のようにimageをECRのURIに設定した後に

docker-compose pull
docker-compose up

とすればイメージの最新を取得してコンテナのイメージが最新で起動します。
この2つのコマンドならDocker何それおいしいの?って方にも億劫にならずに始められそうです。

最後に

新しいものを導入するには相手方に億劫さを感じさせると全体導入までに合意形成が取れずに
断念しがちです。

自分は楽しいけども、相手が面倒にさせることは極力避けていきましょう。
以上100本ノック(何本目だっけ?)でした。mm