基本操作の問題
問題1:状態を確認する
Nginxをpractice-webという名前で起動し、ホストの8082番からアクセスできるようにしてください。起動後、実行中の一覧とログを確認します。
-d、--name、-pの役割を説明できるか、docker psとdocker logsを使えるか確認します。
解答例
docker run -d --name practice-web -p 8082:80 nginx:alpine
docker ps
docker logs --tail 10 practice-web問題2:停止と再開
問題1のコンテナを停止し、一覧で停止状態を確認したあと、再開してブラウザで表示を確認してください。
解答例
docker stop practice-web
docker ps -a
docker start practice-web
curl http://localhost:8082Dockerfileの問題
index.htmlに自分の名前または好きな言葉を表示するNginxイメージを作り、practice-page:1.0というタグで起動してください。
DockerfileはFROM nginx:alpineから始め、HTMLをCOPYします。ビルドコンテキストを示す最後の.を忘れないようにします。
解答例
docker build -t practice-page:1.0 .
docker run -d --name practice-page -p 8083:80 practice-page:1.0
curl http://localhost:8083<h1>自分で作ったページ</h1>HTMLを変更したのに表示が変わらない場合は、イメージを再ビルドしたか、古いコンテナを使っていないかを確認します。
データと通信の問題
問題3:ボリュームでファイルを残す
名前付きボリュームpractice-dataへメッセージを書き込み、別の一時コンテナから読み出してください。
解答例
docker volume create practice-data
docker run --rm --mount source=practice-data,destination=/data alpine sh -c 'echo Docker > /data/message.txt'
docker run --rm --mount source=practice-data,destination=/data alpine cat /data/message.txtpractice-data
Docker問題4:名前で接続する
ネットワークpractice-netとNginxコンテナpractice-siteを作り、同じネットワークのBusyBoxから名前解決を確認してください。
解答例
docker network create practice-net
docker run -d --name practice-site --network practice-net nginx:alpine
docker run --rm --network practice-net busybox nslookup practice-siteComposeの問題
次のComposeファイルを使い、Webサービスを8084番で起動してください。起動後、docker compose ps、docker compose logs、docker compose configを実行し、役割を説明します。
services:
web:
image: nginx:alpine
ports:
- "8084:80"解答例
docker compose up -d
docker compose ps
docker compose logs --tail 10 web
docker compose config
docker compose downWebサービスへバインドマウントを追加し、ホストのHTMLを編集したらブラウザの表示が変わる構成を作ってみましょう。さらにRedisサービスを追加し、Webからはredisというサービス名で接続する理由を説明してください。