初学者によるDocker理解まとめ④ 〜EC2インスタンスを起動してdockerをインストールするまで〜


はじめに

ようやくDockerを学び始めたので自分の理解をまとめておく。
とはいえ、今回はほぼdocker関係ないです。

前回 => https://qiita.com/theFirstPenguin/items/b6d3e414e829e68e23ae
次回 => https://qiita.com/theFirstPenguin/items/bdaf0035e7b44cd33822

やったこと

  • VPCにパブリックサブネットを設置
  • 上記VPCにEC2インスタンスを設置
  • EC2インスタンスにdockerとdocker-composeをインストール

これだけです。
図にして(無駄にめんどくさく)表すとこんな感じ。

VPCにパブリックサブネットを設置

まずはVPCコンソールにアクセス

自分はus-east-2リージョンをいつも選択しています。特に意味はないです。

とりあえずVPCを作成

CIDRブロックは開発シーンではしっかりと考える必要があるが、ここでは適当に10.0.0.0/24を指定。キリがいい/16とか/24がおすすめ。
テナンシーは、リソースを占有するかどうかだが、個人開発で気にする必要はないと思われる。

IGWを作成してVPCにアタッチ

作成。

そして先ほど作成したVPCにアタッチ。

まだこれだけ。

サブネットを作成

先ほど作ったVPCの中にサブネットを作成。
CIDRブロックは/28に設定。これでサブネットの中に2^(32-28)−5=11個のIPアドレスを持つことができる。
また、AZはus-east-2aに設定。

また、サブネットのパブリックIPv4アドレスの自動割り当てを有効化しておく。

ここまで来た。

ルートテーブルを作成

先ほど作ったVPCの中にルートテーブルを作成。

作成したルートテーブルを先ほど作ったサブネットに関連づける。

IGWへのルートを設定してインターネットに接続できるようにする。

ちょっと進んだ。

上記VPCにEC2インスタンスを設置

EC2コンソールにアクセス

インスタンスの設定

AMIは無料枠のAmazon Linux2を選択。
インスタンスタイプも無料枠のt2.microを選択。

インスタンスの詳細設定では、先ほど作ったVPCとサブネットを選択する。
また、自動割り当てパブリックIPを有効化しておく。
その他のオプションは今回設定しない。

ストレージはデフォルトのEBS設定でOK。

タグは適当に設定

セキュリティグループを設定する。
SSHとHTTPのインバウンド通信を全て許可し、アウトバウンドは全ての通信を許可する。

キーペアがなければ新しく作る。

ようやくここまで来た。

EC2インスタンスにdockerとdocker-composeをインストール

ローカルPCからEC2インスタンスに接続

EC2のコンソールで対象インスタンスを選んで「接続」ボタンを押すと下記画面になる。
基本的にはこれに従うだけ。

キーペアが~/Downloadsに保存してあるとすると、下記コマンドで接続できる。

cd ~
mv Downloads/ec2-key.pem .ssh/
cd .ssh/
chmod 400 ec2-key.pem
ssh -i "ec2-key.pem" ec2-user@<your-ec2-public-ip>

chmodの意味についてこちらの記事がとても参考になりました。ありがとうございました。

ほぼほぼゴールまで来た。(いや、スタートかも)

dockerをEC2にインストール

sudo yum -y update
sudo yum install -y docker
sudo gpasswd -a $USER docker
sudo service docker start

再度ログインしなおすと、dockerが使えるようになっている。
参考

docker-composeをEC2にインストール

docker-composeもインストールする必要があるので、公式ドキュメントにしたがってインストールする。

sudo -i
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
exit

これでインストールできた。一応ゴール。

せっかくなので、AMIを保存しておく

dockerをインストール済みの全ての設定を含むイメージをAMIとして保存することができる。
これを使えば、次回にEC2インスタンスを起動するとき、dockerをインストールする必要はない。
インスタンスの設定画面からアクションでAMIを作成できる。

最後に

やっぱりdocker関係なかったです。
ほぼEC2の基礎の記事となってしまいました。
ありがとうございました。