こんにちは。
少しだけ期間が空きました。。
環境周りって難しい。
手順や調べながら環境構築はできるけど、理解しないまま進めると人に説明できないね。。。
今回は、AWSアカウントを作成して、AWSのサービスであるEC2(仮想サーバー)のIPアドレスに接続してブラウザ上に「Hello World!」を表示しました。
手順としては、YouTubeの動画「【AWS 入門】EC2とDockerでHello Worldしよう (youtube.com)」を見ながら、進めました。
動画と違うところは、サーバーに「Amazon linux」ではなく、「ubuntu22.04」を使用したことくらいかな。
動画での進め方としては、以下。
1.VPCとサブネットを作る
2.インターネットGWをくっつける
3.サーバー(EC2)を立てる
4.ファイアウォール(セキュリティグループ)とルーティングを設定
4-1.ファイアウォール(セキュリティグループ)を許可
4-2.ルーティングの設定
5.SSHでサーバーにアクセスする
6.Dockerのインストール&「Hello From Docker!!」
まず、「1.VPCとサブネットを作る」。
VPC(Virtual Private Cloud)サービスはプライベート仮想ネットワーク空間で、このネットワーク内にEC2をたてることができる。サブネットはVPC内のIPアドレス範囲で分割したもの。
AWSのVPCサービスから「VPCを作成」。IPv4 CIDR ブロックで「192.168.1.0/24」を設定(IPアドレスの範囲は「192.168.1.0」から「192.168.1.255」)。IPv6 CIDR ブロックはなし。保存。
続けて、「サブネットを作成」。VPCは上記で作成したものを指定することで、指定したVPC内にサブネットを作成することができる。VPC CIDR で「192.168.1.0/24」が設定されているため、IPv4 CIDR ブロックで「192.168.1.0/25」を設定(IPアドレスの範囲は「192.168.1.0」から「192.168.1.127」)。保存。
次に「2.インターネットGWをくっつける」。
何もしないとVPCはインターネットを通してアクセスすることはできない。そのため、インターネットGW(ゲートウェイ)をVPCにくっつけることでインターネットからのアクセスが可能になるらしい。。。
AWSのVPCサービスから「インターネットゲートウェイを作成」。作成したインターネットゲートウェイを「VPCにアタッチ」で上記で作成したVPCを選択。保存。
次に「3.サーバー(EC2)を立てる」。
AWSのEC2サービスから「インスタンスの起動」。
アプリケーションおよび OS イメージ (Amazon マシンイメージ) に「Ubuntu22.04」を選択。
インスタンスタイプ(サーバーのスペックみたいなものらしい)は「t2.micro」を選択。
ネットワーク設定の「VPC」と「サブネット」は上記で作成したものを指定。
「パブリック IP の自動割り当て」は「有効化」を選択。パブリック IPアドレス=AWS外部からのアクセス許可。
キーペア (ログイン)を作成して、キーペア名に任意の値を設定。*.pemファイルをダウンロードする。キーペア(sshの公開キーと秘密キー)は、EC2インスタンスに接続する時に必要となる。
次に「4.ファイアウォール(セキュリティグループ)とルーティングを設定」。
サブネット単位でセキュリティグループを適用することで、サーバー(EC2)にアクセスが可能になる。「http」からのアクセスを許可するには80番ポートを許可する設定をする。
ネットワーク設定の「セキュリティグループを作成」で、タイプsshでポート範囲に22を設定。カスタムTCPでポート範囲に80を設定。
22と80からのアクセスが許可される。
VPCサービスの「ルートテーブルを作成」。VPCは上記で作成したものを指定。
ルートタブからインターネットで通信を行うために「ルートの追加」をする。
送信先で「0.0.0.0/0」を設定。
ターゲットで上記手順で作成したインターネットGWを指定。
サブネットの関連付けタブから上記手順で作成したサブネットを指定。
次に「5.SSHでサーバーにアクセスする」。
22番ポートを許可する設定は上記で対応済み。
以下をターミナルから確認。
キーペアがダウンロードされていることを確認
ll ~/Downloads/hello-docker-key.pem
chmod 600でパーミッションを変更
chmod 600 ~/Downloads/hello-docker-key.pem
鍵を使ってEC2にアクセスできるか確認(EC2でssh接続する際のユーザー名はubuntu)
ssh -i ~/Downloads/hello-docker-key.pem ubuntu@IPアドレス
次に、「6.Dockerのインストール&「Hello From Docker!!」」。
EC2にDockerをインストールすることでコンテナを作成する。
Docker を Ubuntu システムにインストール
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
Dockerを起動
sudo service docker start
起動情報の確認
sudo docker info
作業用ディレクトリを作成
mkdir hello-docker
cd hello-docker/
以下のファイルを作成
vi hello.html
vi Dockerfile
Dockerfileの中身に以下を設定
※Dokerのnginxでは、ブラウザから初期表示した時にデフォルトで「/usr/share/nginx/html/」にアクセスされる
FROM nginx
COPY ./hello.html /usr/share/nginx/html
Dokerfileを元にイメージを作成
sudo docker build -t hello-docker-ec2 .
指定した「hello-docker-ec2」イメージを元にdockerコンテナを起動
sudo docker run --rm -d -p 80:80 hello-docker-ec2 .
コンテナが起動していることを確認
sudo docker ps
手順はうまくいったのに、ブラウザから接続しても上手く表示されなかった理由として、「http」ではなく「https」に接続していた(-_-;)
一応、ブラウザ上に「Hello World!!!」が表示されること確認。
長々となりましたが、今回はこれで終わり!!