Docker4 択難易度 応用

状況

docker run -d --name api myapp:1.4 で ID は表示されたが、docker ps に api が出ない。docker ps -a の STATUS は Exited (1) 2 seconds ago。昨日から変えたのは環境変数ファイルだけ。

原因を調べる順番として、最も適切なものは?

  1. Adocker logs api で、終了直前に出たエラーを読む
  2. Bホストのファイアウォールで、公開ポートが開いているか
  3. C--no-cache でイメージを作り直して、もう一度起動する
  4. Ddocker inspect api で、渡った環境変数と起動コマンドを見る

正答

  1. C → A → D → B
  2. B → A → C → D
  3. A → D → C → B
  4. D → C → B → A

解説

Exited (1) は、コンテナのメインのプロセスがエラーで終了したことを示す。まず docker logs api(A)で終了直前の出力を読む。設定の読み込み失敗や接続先の誤りは、たいていここにエラー文が出る。次に、昨日変えたのは環境変数ファイルだけなので、docker inspect(D)で実際に渡った環境変数と起動コマンドを確かめる。イメージは変えていないので作り直し(C)は手間のわりに効果が薄く、ログと設定で原因が分からないときの手段。ファイアウォール(B)は外から届くかの話で、起動直後に終了する症状とは関係がない。

参考: docs.docker.com

exiteddocker-logstroubleshooting

この問題を含む Docker のテストを制限時間つきで解く

Dockerクイズへ