クラウドとコンテナの基礎
あるイメージから起動したコンテナの中で、イメージに含まれている設定ファイル /etc/app.conf を書き換えた。Dockerの一般的なストレージの仕組み(overlay2 など)で起きることとして、正しいものはどれか。
- Aファイルがコンテナの書き込み可能な層にコピーされてから書き換えられ、イメージとほかのコンテナには影響しない
- Bイメージの層にあるファイルが直接書き換えられ、同じイメージから起動したほかのコンテナでも、変更後の内容が見える
- Cイメージの層は読み取り専用なので、イメージに含まれているファイルは書き換えられず、書き込みはエラーになる
答えと解説を見る
正解:A. ファイルがコンテナの書き込み可能な層にコピーされてから書き換えられ、イメージとほかのコンテナには影響しない
コンテナのファイルシステムは、読み取り専用のイメージの層の上に、コンテナごとの書き込み可能な層を重ねて1つに見せたものです。下の層にあるファイルを初めて書き換えるとき、そのファイルが書き込み可能な層にコピーされ、以後はコピーの方が使われます(コピーオンライト)。そのため、イメージの層は変わらず、同じイメージを共有するほかのコンテナにも影響しません。大きなファイルでは最初のコピーに時間がかかるので、データベースのデータのように頻繁に書き込むものはボリュームに置きます。
- A. 正しい。最初の書き込みのときに、書き込み可能な層へコピーされます。
- B. イメージの層は読み取り専用で、複数のコンテナで共有されているので、直接は書き換えられません。
- C. 書き込みはエラーにならず、書き込み可能な層にコピーしてから行われます。