見出し画像

【独学】TECHCAMP受講中にECS/ECRについて学んでみた2

どうも、ジュンです

いつもご視聴、コメント、高評価、ありがとうございます

TECHCAMP名古屋 73期 副業フリーランスコースの受講生です
カリキュラムが一通り終わり、チーム開発まで間があるので独学で学んだことについて説明します

ECS/ECRで38個のことについて学んだので、それぞれ説明します
また、ECSクラスターとECSインスタンス作成手順、ECSタスク定義作成手順、ECSタスク定義によるタスクとコンテナ作成手順、volumesを使用してWebページを書き換える方法、ボリュームとマウントポイントを使用してWebページを作成する方法、ECSのEC2インスタンスの数を1つに減らす方法、ECSのEC2インスタンスの数を2つに増やす方法についてまとめたので、それぞれ説明します

★ECS/ECRで学んだこと★
1.EC2とFargateの違い
FargateはEC2の運用管理をAWSが行ってくれますが、自由度が低いです
EC2は自分で運用管理を行いますが、自由度が高いです

2.プロビジョニングモデル
どんな風に運用するかを決定します
オンデマンドインスタンスとスポットがあります

3.オンデマンドインスタンス
高いですが、永続的に利用できます

4.スポット
安いですが、予期せぬタイミングで終了することがあります

5.VPC
Virtual Private Cloudの略で、AWSのサービスのうちの一つです
これを使わないとpublicになりますが、この中にインスタンスを配置するとprivateになります

6.タスク定義でできること
Dockerイメージの定義
CPUの性能
メインメモリの容量設定
起動タイプ
ネットワーキング
ロギング
ボリューム
IAMロール
タスク定義におけるIAMロールは、ECSコンテナエージェントの持つIAMとは別物です

7.ネットワークモードの種類
host
bridge
awsvpc
なし

8.host
Dockerコンテナとホスト両方とも同じポート番号を指定します

9.bridge
Dockerコンテナとホストのポートを別々に指定することができます
ただし、1つのタスク定義で複数のDockerコンテナを作成した場合、エラーとなります

10.awsvpc
bridgeとは違い、Dockerコンテナとホストのポートの間にEMIを挟み、複数のタスクを作成しても同じポート番号を使用できます

11.ネットワークモードなし
外部と接続することができなくなります

12.タスクロール
IAMロールとも呼びます
たとえばRDSを利用するのであれば、RDSの権限を付与したIAMを設定する必要があります
さっきも言いましたが、タスク定義におけるIAMロールは、ECSコンテナエージェントの持つIAMとは別物です

13.コンテナの定義で指定するもの
コンテナ名、イメージ、プライベートレジストリの認証、メモリ制限、ポートマッピング、ヘルスチェック関連、CPUユニット数、GPU、エントリポイント、コマンド、作業ディレクトリ、環境変数、コンテナタイムアウト、リンク、ホスト名、DNSサーバー、マウントポイント、ログ設定、特権付与、ユーザー、リソースの制限

14.イメージ
docker pullコマンドに当たるものです
ECRにあるDockerイメージを、URIをコピーして貼り付けることで、
ECSで作成されたEC2上にDockerコンテナを作成することができます

15.メモリ制限
docker runコマンドのオプションである
--memory
--memory-reservation
に当たるものです
ハード制限の場合、メモリ制限をオーバーするとDockerコンテナのプロセスが終了します
ソフト制限の場合、メモリ制限は行いますがDockerコンテナのプロセスは終了しません

16.ポートマッピング
docker runコマンドのオプションである
-p
--publish
に当たるものです

設定したネットワークモードにて
ポート番号を使用します

17.ヘルスチェックコマンド
docker runコマンドのオプションである
--health-cmd
に当たるものです

Dockerコンテナが正常かどうか監視することができます

18.ヘルスチェック間隔
docker runコマンドのオプションである
--health-interval
に当たるものです

Dockerヘルスチェックコマンドの実行間隔を指定します

19.ヘルスチェックタイムアウト
docker runコマンドのオプションである
--health-timeout
に当たるものです

ヘルスチェックコマンドのタイムアウト時間を設定します

20.ヘルスチェック再試行
docker runコマンドのオプションである
--health-retries
に当たるものです
ヘルスチェックコマンドの再試行数を設定します

21.CPUユニット数
docker runコマンドのオプションである
--cpus
に当たるものです
1つのDockerコンテナが何個のCPUを使用するかを指定します

22.環境変数
docker runコマンドのオプションである
-e
--env
に当たるものです

環境変数を指定することができます

23.コンテナタイムアウト
2019年3月に新しく作成されたものです
1つのタスク定義に複数のコンテナを設定する場合、
各コンテナに依存関係を定義し、
各コンテナの起動順や停止順を指定します

24.リンク
docker runコマンドのオプションである
--link
に当たるものです
現在非推奨です

25.ホスト名
docker runコマンドのオプションである
--hostname
に当たるものです
DockerコンテナにHost名を割り当てることができます

26.DNSサーバー
docker runコマンドのオプションである
--dns
に当たるものです
コンテナが使用するDNSサーバーを指定することができます

27.Volumes
Dockerコンテナと紐づく固定の領域です
/var/lib/docker/volumes/を使用します
何もしなくても自動で作成されます

28.Bind mount
Dockerコンテナと紐づく任意の領域です
/root/volume01などを使用します

使用する場合はタスク定義で
ボリュームの追加を行ってから行います

29.ボリュームソース
docker runコマンドのオプションである
-volumes-from
に当たるものです

ホストの領域とDockerコンテナのvolumesに設定してあるものを関連付けます

30.ログ設定
チェックを打つとawslogsを指定し、自動でAWSのサービスであるCloudWatchにログが出力されます

31.CloudFormation
AWSのサービスのうちの一つです
AWSのリソースを、設計書を元に自動で作成してくれるものです

32.特権付与
Dockerコンテナにrootレベルの特権を与えることができます

33.ユーザー
Dockerコンテナ内で使用するユーザーを指定できます

34.リソースの制限
docker runコマンドのオプションである
--ulimit
に当たるものです
Linuxの機能でもありますが、ファイルディスクリプタの数などを制限することができます

35.タスク定義における制約について
タスク定義で定められたDockerコンテナをどのように配置するか、配置順序を決めるルールが、設定できます

奥が深いです
知らなくてもECSを使用することができます

クラスター制約、配置制約、配置構造を指定できます

タスクがEC2に配置されるまで、その3つのフィルタを通します

36.クラスター制約
cluster constraints
タスクを実行するのにEC2に十分なCPU、十分なメモリがあるか、使うポートが開いているかといった、基本的な判断を行います

37.配置制約
placement constraints
特定の条件を満たすEC2のみに配置するといったように、絞り込みといったフィルターのようなものをかけることができます
たとえば、特定のAMIから構築されたインスタンスのみに絞り込みたい場合だったりとか、GPUを必要とするアプリケーションなどでFussy系のインスタンスタイプのみに配置したりといった要件だったり、タスク定義であらかじめ決めておいたものを、attribute:ecs.instance-type == t2.smallなどのように条件式などで絞り込むことができます
他にも、アベイラビリティーゾーンで絞り込むこともできます

38.配置戦略
配置する優先順位を決めることができます
Binpackが、可能な限り、1つのEC2に配置するものです
Spreadが、指定した条件でEC2に均等に配置していくものです
randomが、適当に配置します

★ECSクラスターとECSインスタンス作成手順★
★ECSタスク定義作成手順★
★ECSタスク定義によるタスクとコンテナ作成手順★
★volumesを使用してWebページを書き換える方法★
★ボリュームとマウントポイントを使用してWebページを作成する方法★
★ECSのEC2インスタンスの数を1つに減らす方法★
★ECSのEC2インスタンスの数を2つに増やす方法★

概要欄に、ECS/ECRについて参考にしたyoutuberのチャンネルを貼るので、
興味がある方は参照してみてください

★くろかわこうへいさん 「目指せコンテナマスター :ECS, Fargate編」
https://www.youtube.com/watch?v=DS5HBTMG1RI&list=PLtpYHR4V8Mg-jbuk4yoXhXwJtreodnvzg

また、本動画で紹介した各種手順をpdfにしたものを
動画の概要欄に貼っているので、興味のある方は確認してみてください

★手順書置き場★
https://drive.google.com/drive/folders/1b4pGAV9j3SnQvlz-qbVJtaFcfZ8eOY5U?usp=sharing

今回の動画は以上です
今日もまたひとつ賢くなりました

この動画がいいなと思った方はチャンネル登録、高評価、
twitterのフォロー、よろしくお願いします

それではまた次の動画でお会いしましょう
ご視聴いただき、ありがとうございました

この記事が気に入ったらサポートをしてみませんか?