LinuCレベル2 コンテナ 問8
コンテナ/コンテナの仕組みDockerのコンテナ内で、イメージに含まれていたファイルを変更したときの動作として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル2の出題範囲「コンテナ」に対応。実際の試験問題ではありません)
- A変更はイメージの該当レイヤへ直接書き込まれ、同じイメージを使う他のコンテナにも反映される
- Bイメージのレイヤは読み取り専用であるため、イメージ由来のファイルはコンテナ内で変更できない
- C変更内容はホストのメモリ上だけに保持され、コンテナを停止した時点で必ず破棄される
- Dファイルがコンテナの書き込み層にコピーされてから変更され、イメージのレイヤは変わらない
正解:D
解説
Dockerのコンテナは、読み取り専用のイメージのレイヤの上に、コンテナごとの書き込み可能な層を重ねて一つのファイルシステムとして見せています。イメージ由来のファイルを変更すると、そのファイルがまず書き込み層へコピーされ、コピーに対して変更が加えられます(コピーオンライト)。そのため元のイメージは変わらず、同じイメージから起動した他のコンテナにも影響しません。書き込み層の内容はコンテナを停止しても残りますが、docker rmでコンテナを削除すると失われます。
選択肢ごとの解説
- A誤り。イメージのレイヤは読み取り専用で、コンテナ内の変更がイメージや他のコンテナに反映されることはありません。
- B誤り。レイヤは読み取り専用ですが、コピーオンライトにより、コンテナ内ではイメージ由来のファイルも変更できます。
- C誤り。書き込み層はディスク上にあり、コンテナを停止しても残ります。失われるのはコンテナを削除したときです。
- D正しい。コピーオンライトにより、書き込み層にコピーしたファイルが変更され、イメージのレイヤは変わりません。