EC2にDockerをインストールしてNginxコンテナを立ち上げる


経緯

Dockerについて勉強しようと思いEC2にインストールしてみました。

インストールから起動まで

EC2にDockerをインストールします。

sudo yum install -y docker
sudo service docker start

ec2-userをdockerグループに追加します。これでdockerコマンド毎にsudoが不要になります。

sudo usermod -a -G docker ec2-user

nginxのコンテナを起動します。nginxのイメージがなければダウンロードしてくれます。(docker pull nginxと同じ)
オプションの -d はコンテナ内部に入らずにバックグラウンドでコンテナを動作させる意味です。

sudo docker run -d nginx

イメージが取得されたかを確認します。イメージIDはab56bba91343です。

$sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ab56bba91343        2 days ago          126MB

コンテナが起動されたか確認します。

コンテナを起動します。
オプションの -d はコンテナ内部に入らずにバックグラウンドでコンテナを動作させます。

コンテナが起動されているかどうか確認します
コンテナIDはf1ebb4c7515bです。

$sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
f1ebb4c7515b        nginx               "nginx -g 'daemon of…"   17 seconds ago      Up 16 seconds       80/tcp              boring_leavitt

コンテナ内部でbashを実行する場合は下記のようにします。
bashを終了するにはexitで終了します。

docker exec -it f1ebb4c7515b /bin/bash

(参考)コンテナを停止する方法

docker stop f1ebb4c7515b

(参考) コンテナを起動 する方法

docker start f1ebb4c7515b

(参考) コンテナを削除 する方法

docker rm f1ebb4c7515b

(参考) イメージを削除 する方法

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ab56bba91343        5 days ago          126MB

docker rmi ab56bba91343

コンテナとの通信

コンテナはホストから隔離された環境にあります。
コンテナは起動時に専用IPアドレスが動的に割り当てられ、ホストから追加設定しないと接続できません。
今回はポートをマッピングする方法でコンテナを起動します。

ホストの8080ポートをコンテナの80番ポートにマッピングして起動します。

sudo docker run -d -p 8080:80 nginx

マッピングできているか確認します。

$ curl --head http://127.0.0.1:8080
HTTP/1.1 200 OK
Server: nginx/1.17.3
Date: Wed, 18 Sep 2019 09:25:41 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 13 Aug 2019 08:50:00 GMT
Connection: keep-alive
ETag: "5d5279b8-264"
Accept-Ranges: bytes

,

コメントを残す

メールアドレスが公開されることはありません。