全体の流れ
- ローカルでコンテナを動かす ←今回の投稿
- ECSでコンテナを動かす
- ECSでコンテナをクラスタリングする
- ECSのログをCloudWatchで収集する
- ドメインを取得する
- ドメインにALBを割り当てる
- HTTPS化する
もくじ
今回の投稿ではECSで動かすコンテナの動作確認をローカルで実施します。
- Dockerfileの作成
- イメージを作成
- ローカルでコンテナを起動
- ブラウザからアクセス確認
- コンテナの起動・停止
- コンテナ・イメージの削除
1. Dockerfileの作成
nginx公式イメージの解説を参考にしてDockerfileを用意します。
以下のDockerfileを利用するとローカルのstatic-html-directory
配下にあるファイルが/usr/share/nginx/html
に配置されたnginxイメージが作成できます。
FROM nginx
COPY static-html-directory /usr/share/nginx/html
<h1>Test</h1>
2. イメージを作成
docker build
コマンドを実行してイメージをビルドします。
$ docker build -t my-image .
Sending build context to Docker daemon 4.608kB
Step 1/2 : FROM nginx
latest: Pulling from library/nginx
e7bb522d92ff: Pull complete
6edc05228666: Pull complete
cd866a17e81f: Pull complete
Digest: sha256:cf8d5726fc897486a4f628d3b93483e3f391a76ea4897de0500ef1f9abcd69a1
Status: Downloaded newer image for nginx:latest
---> 3f8a4339aadd
Step 2/2 : COPY static-html-directory /usr/share/nginx/html
---> 7c8dd0511046
Successfully built 7c8dd0511046
Successfully tagged my-image:latest
補足:-t オプション
イメージ名にmy-image
を指定してビルドを実行
イメージが作成されてることを確認します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-image latest 7c8dd0511046 20 seconds ago 108MB
3. ローカルでコンテナを起動
docker run
コマンドでイメージからコンテナを起動します。
$ docker run -p 8080:80 my-image
補足:-p オプション
下記の指定方法(8080:80
)の場合、ローカルの8080ポートへのリクエストがコンテナの80ポートへ転送される
別のコンソールでdocker ps
コマンドを実行すると、docker run
コマンドで起動したコンテナのスタータスが確認出来ます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c001be823e70 my-image "nginx -g 'daemon ..." 8 seconds ago Up 7 seconds 0.0.0.0:8080->80/tcp relaxed_jennings
4. ブラウザからアクセス確認
ブラウザでhttp://localhost:8080
にアクセスして、index.html
の内容が表示されることを確認します。
docker run
コマンドを実行したコンソールにはNginxのアクセスログが出力されます。
アクセス確認が完了したらctrl + c
コマンドでdocker run
コマンドを停止させます。
docker ps
コマンドを実行すると、ステータスに表示されなくなったことがわかります。
停止されているコンテナのステータスはdocker ps -a
コマンドで確認することが出来ます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c001be823e70 my-image "nginx -g 'daemon ..." 5 seconds ago Up 4 seconds 0.0.0.0:8080->80/tcp relaxed_jennings
5. コンテナの起動・停止
イメージから作成したコンテナを再度起動する場合は、docker start
コマンドを実行します。
docker start
コマンドで起動されたコンテナはバックグラウンドで実行されるため、標準出力をコンソールに出力させた状態で起動させたい場合は-a
オプションを付与して実行します。
# 作成済みのコンテナを確認
$ docker ps -a
# コンテナを起動
$ docker start -a <コンテナID or コンテナ名>
補足:コンテナID
docker ps -a
コマンドでCONTAINER ID列に表示される値
補足:コンテナ名
docker ps -a
コマンドでNAMES列に表示される値
-a
オプションを付与しないでdocker start
コマンドを実行すると、コンテナがバックグラウンドで実行されるため、停止させるためにはdocker stop
コマンドを実行します。
# 作成済みのコンテナを確認
$ docker ps -a
# コンテナを起動
$ docker start <コンテナID or コンテナ名>
# 実行中のコンテナを確認
$ docker ps
# コンテナを停止
$ docker stop <コンテナID or コンテナ名>
6. コンテナ・イメージの削除
コンテナを削除する場合はdocker rm
コマンドを実行します。
# 作成済みのコンテナを確認
$ docker ps -a
# コンテナを削除
$ docker rm <コンテナID or コンテナ名>
イメージを削除する場合はdocker rmi
コマンドを実行します。
# イメージ一覧を表示
$ docker images
# イメージを削除
$ docker rmi <レジストリ名 or イメージID>
補足:レジストリ名
docker images
コマンドでREPOSITORY列に表示される値
補足:イメージID
docker images
コマンドでIMAGE ID列に表示される値