Dockerとは

どっかー

コンテナイメージの作成(ビルド)、レジストリとのイメージのやり取り、コンテナの起動と管理を行うための代表的なソフトウェアの一式。Dockerfileに書いた命令からイメージを作り、docker run でコンテナを起動する。-p によるポートの公開、ボリュームやバインドマウントによるデータの保存、ネットワークの設定などを行える。イメージとコンテナの形式は OCI(Open Container Initiative)の仕様として標準化されており、Docker以外のツールでも同じイメージを扱える。

「Docker」は、1分野の6問の練習問題に出てきます(クラウドとコンテナの基礎など)。

この用語の分野: クラウドとコンテナの基礎

Dockerの練習問題に挑戦

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

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

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

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

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

解説の中の「Docker」

「Docker」が出てくる問題(6問)

  1. LinuxのホストでDockerを使い、ホストとは別のディストリビューションをもとにしたイメージからコンテナを起動して、その中で uname -r(カーネルのリリースを表示するコマンド)と cat /etc/os-release(ディストリビューションの情報を表示するコマンド)を実行した。結果の説明として、正しいものはどれか。
  2. あるイメージから起動したコンテナの中で、イメージに含まれている設定ファイル /etc/app.conf を書き換えた。Dockerの一般的なストレージの仕組み(overlay2 など)で起きることとして、正しいものはどれか。
  3. 上のDockerfileで、docker build でイメージを作るときに実行されるコマンドと、docker run でコンテナを起動するときに実行されるコマンドの組み合わせとして、正しいものはどれか。
  4. 上のDockerfileから作ったイメージ pinger を、docker run pinger example.com として起動した。コンテナの中で実行されるコマンドとして、正しいものはどれか。
  5. Dockerで、コンテナが書いたデータを残すための名前付きボリュームとバインドマウントの説明として、正しいものはどれか。
  6. イメージを registry.example.com/team/web:1.4 と指定して取得(pull)する。この指定の各部分の意味の組み合わせとして、正しいものはどれか。

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

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

関連する用語

コンテナ コピーオンライト JSON 引数 IaC(Infrastructure as Code) アベイラビリティゾーン イミュータブルインフラストラクチャ オートスケーリング オブザーバビリティ オブジェクトストレージ

用語集の一覧へ