全体の流れ
- ローカルでコンテナを動かす ←今回の投稿
- 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列に表示される値
