経緯
Dockerについて勉強しようと思いEC2にインストールしてみました。
インストールから起動まで
EC2にDockerをインストールします。
1 2 | sudo yum install -y docker sudo service docker start |
ec2-userをdockerグループに追加します。これでdockerコマンド毎にsudoが不要になります。
1 | sudo usermod -a -G docker ec2-user |
nginxのコンテナを起動します。nginxのイメージがなければダウンロードしてくれます。(docker pull nginxと同じ)
オプションの -d はコンテナ内部に入らずにバックグラウンドでコンテナを動作させる意味です。
1 | sudo docker run -d nginx |
イメージが取得されたかを確認します。イメージIDはab56bba91343です。
1 2 3 | $sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ab56bba91343 2 days ago 126MB |
コンテナが起動されたか確認します。
コンテナを起動します。
オプションの -d はコンテナ内部に入らずにバックグラウンドでコンテナを動作させます。
コンテナが起動されているかどうか確認します
コンテナIDはf1ebb4c7515bです。
1 2 3 | $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で終了します。
1 | docker exec -it f1ebb4c7515b /bin/bash |
(参考)コンテナを停止する方法
1 | docker stop f1ebb4c7515b |
(参考) コンテナを起動 する方法
1 | docker start f1ebb4c7515b |
(参考) コンテナを削除 する方法
1 | docker rm f1ebb4c7515b |
(参考) イメージを削除 する方法
1 2 3 4 5 | $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ab56bba91343 5 days ago 126MB docker rmi ab56bba91343 |
コンテナとの通信
コンテナはホストから隔離された環境にあります。
コンテナは起動時に専用IPアドレスが動的に割り当てられ、ホストから追加設定しないと接続できません。
今回はポートをマッピングする方法でコンテナを起動します。
ホストの8080ポートをコンテナの80番ポートにマッピングして起動します。
1 | sudo docker run -d -p 8080:80 nginx |
マッピングできているか確認します。
01 02 03 04 05 06 07 08 09 10 | $ 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 |