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

無料レッスン

コンテナーでアプリを動かす

このレッスンのあとで: コンテナーの一覧を読んで、動いているものと止まったものを見分けられる。

45分のレッスンコマンド3件Docker 入門ラボ:止まったサービスを直して、コンテナー、ログ、再起動を学ぶ

自分のパソコンでは動かない

友だちが作ったゲームを、あなたのパソコンで動かそうとしました。ところがエラーが出て、始まりません。友だちのパソコンでは動くのに、です。

原因は、入っているソフトの版が少しずつ違うことでした。この「うちでは動くのに」を無くす道具が、コンテナーです。

このレッスンのゴール

メモ

コンテナーの一覧を読んで、動いているものと止まったものを見分けられる。

重要な言葉

ことばいみれい
コンテナーアプリと必要なものを一つの箱に入れて、他と分けて動かす仕組み
イメージコンテナーを作るための、変えられない設計図
ログアプリが自分の様子を書き残した記録
ボリュームコンテナーが止まっても残る、保存用の場所
ヘルスチェックアプリが元気かを、決まった間隔で調べることhealthy

学生が入力するセルは、このプレビューでは空白です。

コンテナーは軽い箱

コンテナーの中には、アプリと、そのアプリに必要なものだけが入っています。外のパソコンの設定が違っても、箱の中は同じです。

仮想マシンと違って、OSまるごとは入れません。だから起動が数秒で終わり、一台のパソコンに何個も置けます。

例:イメージとコンテナー

言葉たとえ変えられるか
イメージケーキのレシピ変えられない
コンテナーレシピから焼いたケーキ中身は変わる
ボリューム冷蔵庫に入れた作り置き焼き直しても残る

学生が入力するセルは、このプレビューでは空白です。

動いているものを見る

コマンド
docker ps --format "{{.Names}} {{.Status}}"

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

状態の言葉を読む

一覧の「状態」の欄には、短い言葉が出ます。Up は動いている、Exited は止まった、という意味です。

(healthy) が付いていれば、ヘルスチェックに通っています。Exited (1) のかっこの数は、止まったときの終わり方で、0以外は失敗です。

例:状態の欄

状態の欄意味次にすること
Up 5 minutes (healthy)5分前から元気に動いている何もしない
Up 1 minute (unhealthy)動いているが、調べると返事がないログを見る
Exited (1) 2 minutes ago失敗して止まったログを見る
Exited (0) 1 hour ago仕事を終えて止まった普通は何もしない

学生が入力するセルは、このプレビューでは空白です。

止まったものも見る

コマンド
docker ps -a --format "{{.Names}} {{.Status}}"

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

止まった理由はログに書いてある

アプリは、困ったことを文章にして書き残します。それがログで、コンテナーのログは docker logs 名前 で読めます。

直す前に、まずログの最後の数行を読みます。たいていは、足りないものや間違った設定が、そのまま文章で書いてあります。

例:ログの読み方

ログの行(例)読み取れること
shop: started on port 8080起動して、8080番の入口で待った
shop: reading prices from /data/prices.txt価格のファイルを読もうとした
shop: cannot start, /data/prices.txt not found.読めず、そのファイルが無いと言っている
shop: put the file in /data, then restart me.直し方も書いてある

学生が入力するセルは、このプレビューでは空白です。

よくある間違い

注意

止まったら、とにかく再起動すればよいと思いがちです。原因が残っていれば、また同じ所で止まります。先にログを読み、原因を直してから再起動します。

ボリュームだけが残る

コンテナーの中に書いたファイルは、ラボを止めると消えます。残したいデータは、ボリュームに書きます。

ボリュームは、コンテナーの外にある保存場所です。コンテナーを作り直しても、同じボリュームをつなげば、データはそのまま使えます。

共有の場所をのぞく

コマンド
docker exec web ls /settings

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

さらに挑戦:メモリーの上限

コンテナーには、使えるメモリーの上限を決められます。上限を超えると、そのコンテナーだけが止められ、他のコンテナーは守られます。

なぜ「箱ごとに上限」を決めるのが、一台のサーバーで多くのアプリを動かすときに大事なのか、自分の言葉で書きましょう。

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

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。