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

LinuxのホストでDockerを使い、ホストとは別のディストリビューションをもとにしたイメージからコンテナを起動して、その中で uname -r(カーネルのリリースを表示するコマンド)と cat /etc/os-release(ディストリビューションの情報を表示するコマンド)を実行した。結果の説明として、正しいものはどれか。

  1. Auname -r も /etc/os-release も、ホストのカーネルとディストリビューションの情報を表示する
  2. Buname -r も /etc/os-release も、イメージのもとになったディストリビューションとそのカーネルの情報を表示する
  3. Cuname -r はホストのカーネルを、/etc/os-release はイメージのディストリビューションを表示する
答えと解説を見る

正解:C. uname -r はホストのカーネルを、/etc/os-release はイメージのディストリビューションを表示する

コンテナはホストのカーネルを共有するので、カーネルに問い合わせる uname -r は、コンテナの中でもホストのカーネルのリリースを表示します。一方、/etc/os-release はファイルなので、コンテナから見えるファイルシステム、つまりイメージに含まれるものが読まれ、イメージのディストリビューションの名前が表示されます。イメージにはカーネルが含まれず、コマンドやライブラリなどのユーザ空間のファイルだけが入っています。そのため、ホストのカーネルがもたない機能を前提にしたプログラムは、コンテナの中でも動きません。

  • A. /etc/os-release はコンテナのファイルシステムにあるファイルなので、イメージの中身が読まれます。
  • B. イメージにはカーネルが含まれません。カーネルはホストのものが共有されるので、uname -r はホストのリリースを示します。
  • C. 正しい。カーネルはホストと共有し、ファイルはイメージのものが見えます。
この分野を解く 分野ページへ

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

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

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

  1. コンテナイメージとコンテナの関係の説明として、正しいものはどれか。
  2. あるイメージから起動したコンテナの中で、イメージに含まれている設定ファイル /etc/app.conf を書き換えた。Dockerの一般的なストレージの仕組み(overlay2 など)で起きることとして、正しいものはどれか。
  3. 500 MBのアーカイブ data.tar.gz を展開するため、上のDockerfileでイメージを作った。展開の後で、同じ RUN の中でアーカイブを削除したのに、イメージの大きさはアーカイブの分だけ大きいままだった。理由と対策の組み合わせとして、最も適切なものはどれか。
  4. 同じベースイメージ(120 MB)の上に、それぞれ固有の層を30 MBずつ重ねた5つのイメージがある。層の圧縮やメタデータの容量は考えないものとする。1台のサーバにこの5つのイメージをすべて取得(pull)したとき、イメージが使うディスクの容量として、正しいものはどれか。
  5. 上のDockerfileで、docker build でイメージを作るときに実行されるコマンドと、docker run でコンテナを起動するときに実行されるコマンドの組み合わせとして、正しいものはどれか。