クラウドとコンテナの基礎

あるイメージから起動したコンテナの中で、イメージに含まれている設定ファイル /etc/app.conf を書き換えた。Dockerの一般的なストレージの仕組み(overlay2 など)で起きることとして、正しいものはどれか。

  1. Aファイルがコンテナの書き込み可能な層にコピーされてから書き換えられ、イメージとほかのコンテナには影響しない
  2. Bイメージの層にあるファイルが直接書き換えられ、同じイメージから起動したほかのコンテナでも、変更後の内容が見える
  3. Cイメージの層は読み取り専用なので、イメージに含まれているファイルは書き換えられず、書き込みはエラーになる
答えと解説を見る

正解:A. ファイルがコンテナの書き込み可能な層にコピーされてから書き換えられ、イメージとほかのコンテナには影響しない

コンテナのファイルシステムは、読み取り専用のイメージの層の上に、コンテナごとの書き込み可能な層を重ねて1つに見せたものです。下の層にあるファイルを初めて書き換えるとき、そのファイルが書き込み可能な層にコピーされ、以後はコピーの方が使われます(コピーオンライト)。そのため、イメージの層は変わらず、同じイメージを共有するほかのコンテナにも影響しません。大きなファイルでは最初のコピーに時間がかかるので、データベースのデータのように頻繁に書き込むものはボリュームに置きます。

  • A. 正しい。最初の書き込みのときに、書き込み可能な層へコピーされます。
  • B. イメージの層は読み取り専用で、複数のコンテナで共有されているので、直接は書き換えられません。
  • C. 書き込みはエラーにならず、書き込み可能な層にコピーしてから行われます。
この分野を解く 分野ページへ

クラウドとコンテナの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

クラウドとコンテナの基礎のほかの問題

  1. 500 MBのアーカイブ data.tar.gz を展開するため、上のDockerfileでイメージを作った。展開の後で、同じ RUN の中でアーカイブを削除したのに、イメージの大きさはアーカイブの分だけ大きいままだった。理由と対策の組み合わせとして、最も適切なものはどれか。
  2. 同じベースイメージ(120 MB)の上に、それぞれ固有の層を30 MBずつ重ねた5つのイメージがある。層の圧縮やメタデータの容量は考えないものとする。1台のサーバにこの5つのイメージをすべて取得(pull)したとき、イメージが使うディスクの容量として、正しいものはどれか。
  3. 上のDockerfileで、docker build でイメージを作るときに実行されるコマンドと、docker run でコンテナを起動するときに実行されるコマンドの組み合わせとして、正しいものはどれか。
  4. 上のDockerfileから作ったイメージ pinger を、docker run pinger example.com として起動した。コンテナの中で実行されるコマンドとして、正しいものはどれか。
  5. ポート80で待ち受けるWebサーバのイメージ nginx から、上のコマンドでコンテナを起動した。ホストのIPアドレスを 192.0.2.10 とし、ファイアウォールなどの制限はないものとする。同じネットワークにある別のPCのブラウザから、このWebサーバに接続するURLとして、正しいものはどれか。