ECS・Dockerについて学習をしたので自身の理解・復習また文章力の向上のためアウトプットさせていただきます。
ECS・Dockerの学習前の理解
はじめに僕自身のECS・Dockerの理解は以下のような感じでした。
--Docker--
・Dockerは「コンテナ」を作成し、その作成したコンテナ自体は自由に違う環境に移動させることができる。
・その作成した「コンテナ」はどの環境でも使用できる。
--ECS--
・ECSはDockerを管理するAWSのサービス。
・タスク実行:「タスク実行」した数だけ「タスク」が1つの「コンテナ」の中に生成される
ECSはDockerを管理するサービスなので、ECS内で「クラスター」を作成し「タスク定義」し「タスク実行」すると自動で「コンテナ」が生成されそのコンテナ内に実行した「タスク内容」が生成される。
上記のような理解で勉強を始めました。
ECS・Dockerの学習後の理解
学習後の理解は以下のようになりました。-----
1.
「Dockerファイル」を構築してそれによって作成されるものは「Dockerイメージ」
2.
ECRで「リポジトリ」を作成してその後【1.】で作成した「Dockerイメージ」を「リポジトリ」にプッシュする。
3.
ECSで「クラスター」を作成しその後「タスク定義」で「コンテナ」にどのECRのイメージを入れ込むかを定義する。
4.
指定の「クラスター」で「Fargate」や「EC2」などのどの起動タイプで実行するか、どのバージョンを使用するか、タスクを何個実行するかなど設定し「タスク(コンテナ)」を作成する。
-----
・タスク実行:「タスク実行」の数だけ「タスク(コンテナ)」が作成される。
図.2
・「Dockerファイル」を作成し、そのファイルの中に「何を入れるか」や「新たなディレクトリの作成指示」や「その作成したディレクトリ内に新たに何かを入れる」などを予め記述を入れ込みしておき、その「Dockerファイル」を保存しておくと作成したい数毎に作業することがなくなり「タスク実行」するたびに同じ環境のものが生成されるのでミスが起こることがなく、また時間効率も良く、とても効率的で便利です。
・タスクを実行する際に「起動タイプ」を選択します。その中でよく使うのが「Fargate」と「EC2」なり、それぞれ内容も料金を違ってきます。
【EC2】の料金は「Fargate」より料金は安いのが特徴です。ですが「コンテナインスタンス」が作成されるので管理が必要になってきます。
一方で【Fargate】は「EC2」より少し料金は高いですがAWS上で「コンテナ」を「サーバーレス」で実行できるのでメンテナンス等の管理が不要なる便利な機能が特徴です。
ですので上記をまとめると
【Fargate】=ランニングコストは少し高くなるがインスタンス管理の運用コストは発生しない。
【EC2】=ランニングコストは安くなるが、インスタンス管理の運用コストは発生する。
Fargateの料金はこちらを参考にして下さい
EC2の料金はこちらを参考にして下さい
ECS・Dockerのついて
学習前と学習後の理解のまとめ
勉強前と勉強後に認識違いがとてもあった印象でした。
ーーーーーー
勉強前:「タスク実行」した数だけ1つの「コンテナ」の中に「タスク」が作成される(図.1)
↓
勉強後:「タスク実行」した数だけ「タスク(コンテナ)」が作成される(図.2)
ーーーーーー
学習前は「タスク=コンテナ」という認識ではなかったので、上記の認識は大きく違う点で、今回でとても勉強になりました。
またDockerファイルも予め記述などをしておけばミスもなく時間効率も良いので、ぜひ活用していきたいと思います。
Docker自体も各環境に影響することなくどの環境でも作業できるとても便利なものでとても興味が湧きました。まだまだ知識は浅いのでこれからももっと学習していきたいと思います。
最後まで読んでいただいた方、ありがとうございました。