第11章. 高度なトピック
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この章では、より高度なトピックをざっと見ていこう。もうDockerをかなり使いこなし、すでに本番環境で使っているか、少なくとも一般ユーザであることを前提に話を進める。コンテナがどのように機能するのか、Dockerセキュリティ、Dockerネットワーキング、Dockerプラグイン、スワップ可能なランタイム、その他の高度な設定について詳しく説明する。
この章ではDockerのインストールに加えられる設定変更について説明する。これらは便利ではあるが、Dockerには優れたデフォルトがあるため、ほとんどのソフトウェアと同様に、変更する正当な理由があり、その変更があなたにとってどのような意味を持つかについて自分自身を教育していない限り、あなたのオペレーティングシステムのデフォルトに従うべきである。自分の環境に合ったインストールを行うには、試行錯誤やチューニング、時間の経過に伴う調整が必要になるだろう。しかし、よく理解しないうちにデフォルトから設定を変更することは推奨されない。
コンテナの詳細
通常、Linuxコンテナ( )は単一実体として語られることが多いが、実際にはLinuxカーネルに組み込まれたいくつかの別々のメカニズムによって実装されており、それらはすべて連携して動作する。コントロール・グループ(cgroups)、ネームスペース(namespaces)、セキュア・コンピューティング・モード(Secure Computing Mode (seccomp))、SELinuxまたはAppArmorであり、これらすべてがプロセスを封じ込める役割を果たす。cgroupsはリソースの制限を提供し、名前空間はプロセスが同じ名前のリソースを使用することを可能にし、互いのシステムビューから隔離し、Secure Computing Modeはプロセスが使用できるシステムコールを制限し、SELinuxまたはAppArmorはプロセスに追加の強力なセキュリティ隔離を提供する。ではまず、cgroups と namespaces は何をしてくれるのか?
詳細を説明する前に、これらのサブシステムがコンテナの動作にどのように関わっているかを理解するのに役立つかもしれない。一般的なコンピューターは、ワーカー(プロセス)でいっぱいの、大きな倉庫のようなものだと想像してほしい。倉庫はスペースとリソースでいっぱいだが、ワーカーが互いに邪魔し合うのは非常に簡単で、リソースのほとんどは、最初にそれを手に入れた者が使うだけだ。
Dockerを実行し、ワークロードにLinuxコンテナを使用している場合、倉庫がオフィスビルに変わったようなもので、ワーカーはそれぞれ個別のオフィスを持つことになる。それぞれのオフィスには、ワーカーが仕事を遂行するために必要なものがすべて揃っており、一般化すれば、他の人(プロセス)が何をしているのかをあまり気にすることなく仕事ができる。
名前空間はオフィスの壁を構成し、プロセスが特別に許可されていない方法で隣のプロセスと相互作用できないようにする。コントロールグループは、光熱費を受け取るために家賃を払うようなものだ。プロセスが最初にスピンアップされるとき、CPUとストレージサブシステムに各サイクルごとに許される時間が代入される。これは、ワーカー(プロセス)が他の人のために確保されたリソースやスペースを使用することなく、必要なリソースを確保するのに役立つ。最悪の騒がしい隣人を想像してみれば、オフィス間のしっかりとした障壁のありがたさがわかるだろう。最後に、セキュア・コンピューティング・モード、SELinux、AppArmorは、オフィスのセキュリティのようなもので、何か予期せぬことや不都合なことが起こったとしても、書類作成やインシデントレポートの提出という頭痛の種以上のことは起こりそうにない。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access