Docker100本ノック Dockerレジストリを利用する(EC2 Container Registry)
前回の記事
Docker(compose)初学者が困ったときに約立つコマンド集
でDocker環境が出来上がりました。
メンバーと共同で開発するのでDockerイメージの配布方法について考えなければなりません。
最初はdocker-{プロエジェクト名}のリポジトリからREADMEでこれ実行してね。
と配布したのですが、docker何それ?美味しいの?人だと億劫さを感じるかもしれません。
もっとスマートな方法ないかなぁ と思っていたら、
あ、AWSつかってるからECR(EC2 Container Registry)
あるじゃん
と思い、プロジェクトメンバーには
docker-compose pull
docker-compose up -d
だけで環境を持ってこれる世界を作ったときのメモになります。
対象者
- まだDockerを触り始めた方
- 今から始めるDocker初心者にお届けするDockerの始め方でDockerに興味をもたれた方
環境
- 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の料金について
350TB 使っても月額0.050$なのでDockerレジストリだけなら気軽に使えそうです。
では試してみましょう
ECSサービスに行く
図のようにリポジトリからリポジトリの作成を押しましょう
リポジトリを作る
自分はRailsの環境のイメージなので
{プロジェクト名}-rails
みたいな感じででつけました。
Dockerイメージのレジストリのpush方法を見る
このようにECRのイメージのpush方法が出てきます。
これの通りにやるだけです。
一点だけ注意が必要でawscliが古いとエラーになります。
(ちょっとどのバージョンからエラーとかは調べていません。)
エラーが出た方はawscliをアップグレードしておきましょう。
pip install awscli --upgrade
Pushしたら反映されているか確認
Dockerイメージをpushするとこんな感じになります
反映されているのがわかりますね。
Docker-composeに記載する
あとは使っているdocker-composeにこんな風に記載するだけです。
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
Discussion