LoginSignup
18
14

More than 5 years have passed since last update.

Amazon ECS を利用する前にローカルでコンテナを動かす

Last updated at Posted at 2017-12-29

ecs01.png

全体の流れ

  1. ローカルでコンテナを動かす ←今回の投稿
  2. ECSでコンテナを動かす
  3. ECSでコンテナをクラスタリングする
  4. ECSのログをCloudWatchで収集する
  5. ドメインを取得する
  6. ドメインにALBを割り当てる
  7. HTTPS化する

もくじ

今回の投稿ではECSで動かすコンテナの動作確認をローカルで実施します。

  1. Dockerfileの作成
  2. イメージを作成
  3. ローカルでコンテナを起動
  4. ブラウザからアクセス確認
  5. コンテナの起動・停止
  6. コンテナ・イメージの削除

ecs05.png

1. Dockerfileの作成

nginx公式イメージの解説を参考にしてDockerfileを用意します。

参考:
https://hub.docker.com/_/nginx/

以下のDockerfileを利用するとローカルのstatic-html-directory配下にあるファイルが/usr/share/nginx/htmlに配置されたnginxイメージが作成できます。

Dockerfile
FROM nginx
COPY static-html-directory /usr/share/nginx/html
static-html-directory/index.html
<h1>Test</h1>

ecs02.png

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の内容が表示されることを確認します。

ecs03.png

docker runコマンドを実行したコンソールにはNginxのアクセスログが出力されます。

ecs04.png

アクセス確認が完了したら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列に表示される値

18
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
14