LoginSignup
3
2

More than 5 years have passed since last update.

ゼロからAmazon Elastic Container Service(ECS) を使ってみるの巻

Last updated at Posted at 2018-03-02

目的

Amazon Elastic Container Service(ECS) を使って、可搬性と集約性が高めれるか体験

目標

可搬性の確認のため、Web アプリを日本からアメリカのリージョンへ移行がどのくらい時間がかかるか確認する
>期待する効果:ハードウェア型仮想化と比べ、コンテナ型仮想化は、イメージが少量だから時間が半分で移行できる

集約性確認のため、python2系と3系のApp を安く簡単に使えるか確認する
>期待する効果:異なるライブラリやミドルウェアver を同一VM で動かせるから、集約性が上がる
        特に、昼用のapp と夜用のapp が、ライブラリver 違いで動かないって時に効果的か?

前提

centos7 が動いている(私は、win PC で、VirtualBox 上にcentos7 を動かしている)
GitHub のユーザを持っている
 持ってない方は、下のサイトが分かりやすい
 https://tech-camp.in/note/programming/4756/

pip を使うため、利用できなければ、下のコマンドで実行
sudo apt install python-pip

yum を使うため、利用できなければ、下のコマンドを実行
sudo apt install yum

curl を使うため、利用できなければ、下のコマンドを実行
sudo apt install curl

作業

Amazon CLI の導入
コンテナイメージを作成して、ECS にアップ
アップしたコンテナを別リージョンへする

Virtual Box の設定変更(必要な人だけ)

事前準備として、作業ログを残したいので、Virtual Box のVM へssh ツールでログインできるようにする

VM を停止する

Virtual Box の該当VM を選択 > (右クリックから)設定
下の図のように、ネットワーク > 高度 > ポートフォワーディング
WS000000.JPG

下の図のように設定を追加
WS000001.JPG

OK > OK
で、設定終了

VM を起動する
Virtual Box のコンソール画面上で{
ip addr show
nic を確認する。私は、 enp0s3

nic の自動起動設定を行う
nmcli connection modify enp0s3 connection.autoconnect yes

サーバを再起動
reboot

nic が起動していることを確認する
ip addr show
nic にinet add などの情報があればok

}

ssh クライアント上で{
対象のvm へログインする
私の場合、
127.0.0.1:222
以降は、ssh クライアント上での操作を示す
}

Ubuntu 等のLinux OS で作業する場合

ログを取るために下のように実行しましょう
sudo script /home/academy_usr/デスクトップ/today.log

Amazon CLI の導入

下の公式サイト通り、実行
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/installing.html

インストール
sudo pip install awscli
sudo aws --version
バージョン情報が出力されればok

Docker の導入

コンテナ管理を効率化してくれるナイスミドルなDcoker を導入する
下のサイトがとても分かりやすいので参照
http://docs.docker.jp/engine/getstarted/index.html

下のページを参照
http://docs.docker.jp/engine/getstarted/step_one.html

(Ubuntu の場合)
スクリプトでインストール
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
sudo docker version
バージョン情報が出力されればok

(Windows の場合)
下に実行したコマンドを抜粋
which curl
sudo curl -fsSL https://get.docker.com/ | sh
sudo reboot
sudo systemctl start docker
sudo docker run hello-world

Hello from Docker!
と出力されればok

作ったコンテナを一括削除する
docker rm -f docker ps -a -q
※Qiita 仕様で、変に見えますが、上のコードを一文でコピーして実行

Docker-compose の導入

下のサイトを参照
https://github.com/docker/compose/releases/

qiita の特殊記号とかぶるので、変なコードっぽくなってますが、全文コピペして下さい
sudo curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s-uname -m` -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

Compose ファイルの作成

手間な人は、下のコマンドで、compose ファイルを作っています。
curl -LO https://raw.githubusercontent.com/HaHatake/wordpress/master/docker-compose.yml

自作したい方は、下のサイトを参考に作ってみましょう。
https://github.com/HaHatake/wordpress/blob/master/docker-compose.yml

コンテナ起動

先程ダウンロードした compose を実行
docker-compose up -d

15分程で、コンテナの起動が確認できる
docker ps

コンテナのIP を確認する

docker ps
docker inspect

ESC を使ってみる

下のサイトを参照
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ECS_GetStarted.html

ECS コンソールにログイン > リージョンを バージニア北部 に変更 >

Tips

イメージを作ろうとすると下のコードが出た
Dockerfile parse error line 1: unknown instruction: 400:
よく見ると、Dockerfile の中身が、404 になってた。
curl でアドレスを間違っていたようだ。修正済み。

Docker イメージの作成(別の内容にしたため、トラシュー側へ){

簡単なweb appをGitHub へアップしているので、作るのが手間な人は下を参考
mkdir -m 777 awstest
cd awstest
curl https://raw.githubusercontent.com/HaHatake/AWStest/master/app.py > app.py
curl https://raw.githubusercontent.com/HaHatake/AWStest/master/requirements.txt > requirements.txt
curl https://raw.githubusercontent.com/HaHatake/AWStest/master/Dockerfile > Dockerfile
curl https://raw.githubusercontent.com/HaHatake/AWStest/master/docker-compose.yml > docker-compose.yml

Docker の勉強のため、下のサイトのコードを参考になればgood
https://github.com/HaHatake/AWStest

sudo docker build ./ -t webtest
uccessfully tagged webtest:latest のような出力がされればok

sudo docker images
下のように出力されればok
webtest latest 400b99f177c0 16 minutes ago 687MB

コンテナの起動

作成したイメージを走らせる
今回は、上で作成したwebtest イメージを起動してコンテナにする
sudo docker run -d -it -p 50080:80 webtest

下のコマンドで、webtest が稼働していることを確認する。
sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abe086a9a514 webtest "/bin/sh -c 'python …" 4 minutes ago Up 4 minutes 0.0.0.0:50080->80/tcp wizardly_bell

稼働したコンテナのip を確認する

}Docker イメージの作成(別の内容にしたため、トラシュー側へ)

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2