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

Linuxのコンテナを実現するカーネルの機能のうち、名前空間(namespaces)とcgroups(コントロールグループ)の役割の組み合わせとして、正しいものはどれか。

  1. A名前空間:プロセスから見えるもの(プロセスID、ネットワーク、マウントなど)を分ける、cgroups:CPUやメモリなどの資源の使用量を制限・計測する
  2. B名前空間:CPUやメモリなどの資源の使用量を制限・計測する、cgroups:プロセスから見えるもの(プロセスID、ネットワーク、マウントなど)を分ける
  3. C名前空間:コンテナごとに別のカーネルを起動して互いを隔離する、cgroups:コンテナごとに仮想的なCPUを作り、ハードウェアを模倣する
答えと解説を見る

正解:A. 名前空間:プロセスから見えるもの(プロセスID、ネットワーク、マウントなど)を分ける、cgroups:CPUやメモリなどの資源の使用量を制限・計測する

コンテナは、ホストのカーネルの上で動く普通のプロセスに、2つの仕組みで隔離をかけたものです。名前空間は、プロセスID、ネットワーク、マウント(ファイルシステムの見え方)、ホスト名などをグループごとに分け、コンテナの中のプロセスには自分たちの分だけが見えるようにします。cgroupsは、プロセスのグループが使えるCPUの時間やメモリの量を制限し、使用量を計測します。どちらもカーネルの機能なので、コンテナは別のカーネルを起動せず、ハードウェアを模倣することもありません。

  • A. 正しい。名前空間が「見え方」を、cgroupsが「使える量」を受け持ちます。
  • B. 役割が逆です。資源の量を制限するのがcgroupsで、見え方を分けるのが名前空間です。
  • C. 別のカーネルを動かしたりハードウェアを模倣したりするのは、ハイパーバイザを使う仮想マシンの方式です。コンテナはホストのカーネルを共有します。
この分野を解く 分野ページへ

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

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

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

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