メモ
前提
-
hoge
を1秒おきにコンソール出力するだけのUbuntuをコンテナとして起動する - 手元はUbuntu(18.04)
- docker インストール済
- AWS認証情報を手元の環境に登録済み
- ECS はEC2タイプで固定数のインスタンスとする
手順
- AWSマネジメントコンソールでECRでリポジトリを作成する
- 手元の環境で Dockerfile ファイルを作成する
Dockerfile
FROM ubuntu
CMD while :; do echo hoge ; sleep 1; done
3 . Dockerイメージ作成
ECRにプッシュすることを見据えてタグを付ける
% docker build . -t "[ECRのURI]:[今回のイメージのタグ]"
(例)% docker build . -t "xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/ubuntu:sleep-echo"
4 . ECRにログイン
% aws ecr get-login-password | docker login --username AWS --password-stdin [ECRリポジトリのドメイン]
(例)% aws ecr get-login-password | docker login --username AWS --password-stdin xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com
5 . ECR にイメージをpush
ECRにイメージがpushされることを確認する
% docker push [イメージのタグ]
(例)% docker push xxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/ubuntu:sleep-echo
(以下からはAWSマネジメントコンソールでの作業)
6 . クラスタの作成
- 「EC2 Linux + ネットワーキング」
- クラスター名を適当に入力
- EC2 インスタンスタイプを適当に選択
- あとはデフォルトで作成
デフォルトではインスタンス数が「1」のはずなので、EC2インスタンスが1台立ち上げるはず。
7 . タスク定義の作成
- 「新しいタスク定義の作成」
- 「EC2」
- 「タスク定義名」適当に入力
- 「コンテナの追加」
- 「コンテナ名」適当に入力
- 「イメージ」にECRにアップしたイメージのURIを記入
- 「メモリ制限」に128入力
- 「作成」
8 . タスクの実行
- ECSダッシュボードでクラスタを選択
- タスクタブを選択
- 「新しいタスクの実行」選択
- 「起動タイプ」をEC2選択
- 「タスク定義」で7で作成したタスクを選択
- そのままタスクの実行
作成したEC2インスタンスでコンテナが実行される。
SSMのセッションマネージャ等でログインし、 docker ps
するとわかりやすい。