Docker ハンズオン演習
ホーム
ホーム
  • 0. ラボの使い方
  • 1. Docker の基本コマンド
  • 2. Docker コンテナの実行
  • 3. Docker イメージのビルド
  • 4. Docker レジストリ
  • 5. Volume
  • 6. ネットワーク
  • 7. Docker Compose

3. Docker イメージのビルド

このラボでは Dockerfile の設定と Dockerfile からのイメージのビルドについて学習します。

テキストを参照しながら各問題にチャレンジしてください。
必要があればウェブで調べても構いません。

ステップ 1: 問題 1/15

(※ スクリプトの実行が完了してから開始してください)
現在このホストには何個のイメージが存在しますか。

  1. 7
  2. 3
  3. 4
  4. 0
Hints

docker image ls コマンドを使用します。

Answer

4

ステップ 2: 問題 2/15

ubuntu イメージのサイズは以下のどれですか (最もサイズが近いものを選んでください)。

  1. 5.58MB
  2. 64GB
  3. 78.1MB
  4. 1.95MB
  5. 1.2GB
Hints

docker image ls コマンドを実行して SIZE 列を確認します。

Answer

78.1MB

ステップ 3: 問題 3/15

(※ スクリプトの実行が完了してから開始してください)
いま新しいイメージを pull しました。
新たに pull された nginx イメージのタグは以下のどれですか。

  1. 1.14
  2. 11cd0b38bc3c
  3. 1.10.1
  4. 1.14-alpine
  5. perl
Hints

docker image ls コマンドを実行して IMAGE 列を確認します。

Answer

1.14-alpine

ステップ 4: 問題 4/15

アプリケーションのコードを用意しました。
Dockerfile で指定されているベースイメージは以下のどれですか。
/root/color-webapp ディレクトリの Dockerfile を調べて回答してください。

  1. rhel:3.6
  2. python:3.6
  3. ubuntu:latest
  4. centos:7
  5. python
Hints

/root/color-webapp/Dockerfile を参照して FROM のアーギュメントを確認します。

Answer

python:3.6

ステップ 5: 問題 5/15

アプリケーションのコードはコンテナのどこにコピーされますか。 /root/color-webapp ディレクトリの Dockerfile を調べて回答してください。

  1. /var
  2. /root
  3. /tmp
  4. /opt
Hints

/root/color-webapp/Dockerfile を参照して COPY のアーギュメントを確認します。

Answer

/opt

ステップ 6: 問題 6/15

この Dockerfile からビルドされたイメージを使用してコンテナが起動したとき、コンテナ内のアプリケーションを実行するのに使用されるコマンドは以下のどれですか。

  1. docker run app
  2. pip install flask
  3. app.exe
  4. python app.py
Hints

/root/color-webapp/Dockerfile を参照して ENTRYPOINT のアーギュメントを確認します。

Answer

python app.py

ステップ 7: 問題 7/15

コンテナのアプリケーションは何番ポートを使用しますか。(コンテナは何番ポートを公開しますか)

  1. 8080
  2. 5000
  3. 80
  • [] 0.0.0.0
Hints

/root/color-webapp/Dockerfile を参照して EXPOSE のアーギュメントを確認します。

Answer

8080

ステップ 8: 問題 8/15

この Dockerfile とアプリケーションのコードから、color-webapp という名前のイメージをビルドしてください。タグは指定しないでください。

  • Dockerfile:/root/color-webapp/Dockerfile
  • イメージ名:color-webapp
Hints

docker image build コマンドを使用します。-t オプションでイメージ名を指定します。
コマンドを実行するために適切なディレクトリに移動することを忘れないようにしてください。

Solution

以下を実行します。

cd /root/color-webapp
docker image build -t color-webapp .

ステップ 9: 問題 9/15

ビルドしたイメージ color-webapp を使用して、以下の設定でコンテナを起動してください。

  • イメージ:color-webapp
  • コンテナポート:8080
  • ホストポート:8282
Hints

-p 8282:8080 でポートマッピングを設定します。

Solution

docker container run -d -p 8282:8080 color-webapp を実行します。

ステップ 10: 問題 10/15

コンテナのウェブ アプリケーションが動作していることを確認します。 以下からホストポートにアクセスしてください。

ステップ 11: 問題 11/15

ベースイメージであるイメージ python:3.6 で使用されている OS は以下のどれですか。
必要があれば新たにコンテナを起動しても構いません。

  1. centos
  2. debian
  3. rhel
  • [ ]ubuntu
Hints

コンテナ内で cat /etc/*release* を実行することで OS を確認できます。 color-webapp のコンテナがすでに停止している場合は、イメージ python:3.6 から新たにコンテナを起動して確認します。
color-webapp のコンテナが起動している場合は、docker container exec コマンドを使用してコンテナ内で cat /etc/*release* を実行することもできます。

Solution

以下のどちらかを実行します。

  • docker container run python:3.6 cat /etc/*release*
  • docker container exec <CONTAINER_ID | CONTAINER_NAME> cat /etc/*release*
Answer

debian

ステップ 12: 問題 12/15

イメージ color-webapp のサイズは以下のどれですか。

  1. 500MB
  2. 913MB
  3. 80MB
  4. 920MB
  5. 2GB
Hints

docker image ls コマンドを実行して SIZE 列を確認します。

Answer

913MB

ステップ 13: 問題 13/15

作成した color-webapp のイメージはサイズが大きすぎます。コンテナイメージはなるべくサイズが小さく軽量な方がよいため、より小さいサイズでイメージを再作成します。 /root/color-webapp/Dockerfile を修正し、ベースイメージを Python3.6 のより小さいサイズのイメージに変更して、以下の設定・要件で新しいイメージをビルドしてください。

  • イメージ名:color-webapp
  • タグ:lite
  • イメージサイズ:150MB 未満

イメージは以下の Docker Hub のページから探すことができます。 https://hub.docker.com/_/python/tags?page=1&name=3.6

Hints
  • /root/color-webapp/Dockerfile を vi や nano エディタを使用して開きます。
  • FROM のアーギュメントを、例えば python:3.6-alpine に変更します。
  • docker image build コマンドを使用して新しいイメージをビルドします。
Solution

Dockerfile を修正した後、/root/color-webapp ディレクトリで docker image build -t color-webapp:lite . を実行します。

ステップ 14: 問題 14/15

ubuntu イメージが作成されるときに使われる Dockerfile を /root/Dockerfile-ubuntu として用意しました。このファイルを参照して回答してください。
ubuntu イメージからコンテナが起動したとき、どのコマンドが実行されますか。

  1. bash
  2. /root bash
  3. ubuntu
  4. entrypoint bash
  5. bash ubuntu
Hints

/root/Dockerfile-ubuntu を参照して CMD のアーギュメントを確認します。

Solution

cat /root/Dockerfile-ubuntu | grep CMD を実行します。

Answer

bash

ステップ 15: 問題 15/15

ubuntu イメージを使用して、起動時に sleep 1000 を実行するようにコンテナを起動してください。detached モードで起動してください。
(Dockerfile-ubuntu からイメージを自身でビルドする必要はありません)

Hints

ubuntu イメージでは CMD でデフォルトのコマンドだけが指定されているため、docker container run コマンドで sleep 1000 を指定することで起動時コマンドをオーバーライドできます。

Solution

docker container run -d ubuntu sleep 1000 を実行します。

完了


チャレンジ完了!

お疲れ様でした!

Prev
2. Docker コンテナの実行
Next
4. Docker レジストリ