3. Docker イメージのビルド
このラボでは Dockerfile の設定と Dockerfile からのイメージのビルドについて学習します。
テキストを参照しながら各問題にチャレンジしてください。
必要があればウェブで調べても構いません。
ステップ 1: 問題 1/15
(※ スクリプトの実行が完了してから開始してください)
現在このホストには何個のイメージが存在しますか。
- 7
- 3
- 4
- 0
Hints
docker image ls コマンドを使用します。
Answer
4
ステップ 2: 問題 2/15
ubuntu イメージのサイズは以下のどれですか (最もサイズが近いものを選んでください)。
- 5.58MB
- 64GB
- 78.1MB
- 1.95MB
- 1.2GB
Hints
docker image ls コマンドを実行して SIZE 列を確認します。
Answer
78.1MB
ステップ 3: 問題 3/15
(※ スクリプトの実行が完了してから開始してください)
いま新しいイメージを pull しました。
新たに pull された nginx イメージのタグは以下のどれですか。
- 1.14
- 11cd0b38bc3c
- 1.10.1
- 1.14-alpine
- perl
Hints
docker image ls コマンドを実行して IMAGE 列を確認します。
Answer
1.14-alpine
ステップ 4: 問題 4/15
アプリケーションのコードを用意しました。Dockerfile で指定されているベースイメージは以下のどれですか。/root/color-webapp ディレクトリの Dockerfile を調べて回答してください。
- rhel:3.6
- python:3.6
- ubuntu:latest
- centos:7
- python
Hints
/root/color-webapp/Dockerfile を参照して FROM のアーギュメントを確認します。
Answer
python:3.6
ステップ 5: 問題 5/15
アプリケーションのコードはコンテナのどこにコピーされますか。 /root/color-webapp ディレクトリの Dockerfile を調べて回答してください。
- /var
- /root
- /tmp
- /opt
Hints
/root/color-webapp/Dockerfile を参照して COPY のアーギュメントを確認します。
Answer
/opt
ステップ 6: 問題 6/15
この Dockerfile からビルドされたイメージを使用してコンテナが起動したとき、コンテナ内のアプリケーションを実行するのに使用されるコマンドは以下のどれですか。
- docker run app
- pip install flask
- app.exe
- python app.py
Hints
/root/color-webapp/Dockerfile を参照して ENTRYPOINT のアーギュメントを確認します。
Answer
python app.py
ステップ 7: 問題 7/15
コンテナのアプリケーションは何番ポートを使用しますか。(コンテナは何番ポートを公開しますか)
- 8080
- 5000
- 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 は以下のどれですか。
必要があれば新たにコンテナを起動しても構いません。
- centos
- debian
- 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 のサイズは以下のどれですか。
- 500MB
- 913MB
- 80MB
- 920MB
- 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 イメージからコンテナが起動したとき、どのコマンドが実行されますか。
- bash
- /root bash
- ubuntu
- entrypoint bash
- 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 を実行します。
完了
チャレンジ完了!
お疲れ様でした!