経緯
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