クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

Docker の基本

レッスン全文をここで読めます。無料アカウントを作成すると、実際のラボで実践できます。

コンテナラボ読了目安 8分コマンド6個

このレッスンでやること

コンテナは、自分専用の小さな閉じた箱の中で動くプログラムです。箱の中には、自分のファイルがあります。実際のシステムは、いくつものコンテナが協力して動いています。1つが止まったら、まず何が動いているかを見て、コンテナが言い残したことを読み、隣のコンテナの中を調べます。あなたのラボには3つのコンテナがあり、そのうち1つが起動しません。理由を見つけ、直し、もう一度起動します。このターミナルで使える docker コマンドは4つだけです。

はじめる前に

メモ

このレッスンの上にあるバーのラボを起動を押して、動いていると表示されるまで待ってください。3つのコンテナの名前は web、cache、worker で、このターミナルの docker はこの3つだけを扱います。下の実行ボタンを押すと、コマンドが順番に、同じセッションのラボのターミナルへ入力されます。実行の様子を見たり、自分でコマンドを打ったりするときは、バーのターミナルを開く(新しいタブ)を押します。

1. 何が動いているかを見て、ログを読む

docker ps -a は、止まっているものも含めて、すべてのコンテナを表示します。STATUS の列を読んでください。web と cache は Up と (healthy) で、worker は Exited (1) です。つまり、起動してすぐに止まったのです。-a なしの docker ps では、止まったものは表示されません。止まったコンテナにも、ログは残っています。2つ目のコマンドで表示すると、1行目は worker: cannot start で始まり、設定ファイルに QUEUE_HOST の行がない、と書いてあります。

コマンド
docker ps -a

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
docker logs worker

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

2. 隣のコンテナの中を見て、直して、再起動する

止まったコンテナの中には入れません。でも、web は設定フォルダーを worker と共有しています。それは名前付きボリュームです。docker exec は、動いているコンテナの中でコマンドを1つ実行します。1つ目のコマンドは設定ファイルを表示し、4行あって、最後は POLL_SECONDS=5 です。2つ目のコマンドは、足りない行を追加します。キューを預かるサービスの名前、cache を書きます。(中でシェルを使いたいときは、自分のターミナルで docker exec -it web sh と打ちます。)そのあと docker restart worker で、もう一度起動します。コンテナの名前が表示されます。

コマンド
docker exec web cat /settings/worker.conf

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
docker exec web sh -c "echo QUEUE_HOST=cache >> /settings/worker.conf"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
docker restart worker

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

3. 確かめて、何が残るかを見る

これで worker が Up になります。最初の数秒は (health: starting) で、そのあと (healthy) に変わります。まだ変わっていなければ、もう一度実行してください。自分のターミナルで docker logs worker と打つと、最後に worker: finished job の行が並びます。次に、ラボのバーのラボを停止を押し、もう一度ラボを起動を押してから、docker ps -a を実行してください。worker はすぐに healthy で立ち上がります。あなたが書いた行が、名前付きボリュームに残っているからです。/settings の外でコンテナの中に書いたものは、消えてしまいます。コンテナは、どこでもそういう動きをします。

コマンド
docker ps

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

先生へ

ヒント

このレッスンは、ラボで進めるレッスンの小さな例です。手順と実行ボタンがレッスンで、ラボは生徒一人ひとりのコピーです。このラボは、3つのサービスと1つの名前付きボリュームでできています。ここでは自動採点は行いません。生徒は、直す前と直した後の docker ps -a、原因を教えてくれたログの1行、そしてラボが止まっても何が残るかを説明した1文を提出します。自分のモジュールにコピーして変更するか、レッスンビルダーのラボメニューから最初から作ってください。

このラボとソースについて: Docker 入門ラボ:止まったサービスを直して、コンテナー、ログ、再起動を学ぶ

授業で教えていますか?これらのレッスンを生徒に割り当て、採点と生徒ごとのラボを使えます。