LinuCレベル3 プラットフォームスペシャリスト コンテナ技術の利用 問7
コンテナ技術の利用/コンテナの操作と管理compose.yml(Docker Compose)における各サービスのdepends_onキーの役割として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「コンテナ技術の利用」に対応。実際の試験問題ではありません)
- Aサービス間の起動順序の依存関係を定義し、依存先のサービスを先に起動させる
- B同じネットワークに属するサービス同士が、サービス名で相互に名前解決できるようにする
- C依存先のサービスが応答を返せる状態になるまで、依存元のコンテナの起動を必ず待機させる
- D依存先のサービスが停止したときに、依存元のサービスも自動的に停止・再起動させる
正解:A
解説
Docker Composeのdepends_onキーは、あるサービスが別のサービスに依存していることを示し、依存先のサービスが先に起動されるように起動順序を制御します。ただし既定では依存先のコンテナが起動したことしか保証せず、アプリケーションが要求を受け付けられる状態になるまで待つには、healthcheckと組み合わせてcondition: service_healthyを指定する必要があります。
選択肢ごとの解説
- A正しい。depends_onはサービス間の起動順序の依存関係を定義するキーです。
- B誤り。サービス名での名前解決は同じCompose用ネットワークに参加していれば自動的に働くもので、depends_onの機能ではありません。
- C誤り。既定のdepends_onは依存先が「起動した」ことしか保証しません。準備完了まで待つにはcondition: service_healthyの指定が要ります。
- D誤り。依存先が実行中に停止・クラッシュしたときに、依存元が常に自動で停止・再起動するわけではありません。ただし depends_on は依存関係に基づく停止順序も扱い、長形式の depends_on で restart: true を指定すると、明示的な Compose 操作による依存先の更新・再起動に連動します。無条件に『停止したら自動で停止・再起動する』とする本肢の説明は正しくありません(サービス自身の restart ポリシーとも区別します)。