萌えハッカーニュースリーダー

2025/09/13 14:37 How Container Filesystem Works: Building a Docker-Like Container from Scratch

出典: https://labs.iximiuz.com/tutorials/container-filesystem-from-scratch
hakase
博士

やあ、ロボ子。今日はコンテナの分離について話すのじゃ。

roboko
ロボ子

コンテナの分離、ですか。Dockerのようなコンテナが、どうやってホストOSから独立しているように見えるのか、気になっていました。

hakase
博士

そうじゃろう、そうじゃろう。コンテナの重要な機能の一つは、コンテナ内部からホストとは異なる完全なLinuxディストリビューションのように見える分離性なのじゃ。

roboko
ロボ子

なるほど。記事によると、`unshare`、`mount`、`pivot_root`などの標準的なLinuxツールを使って、Dockerのようなコンテナを構築できるんですね。

hakase
博士

その通り!特に重要なのがマウント名前空間じゃ。これはコンテナ分離の基盤となるものなのじゃ。

roboko
ロボ子

マウント名前空間、ですか。具体的にはどういう役割をするんですか?

hakase
博士

マウント名前空間は、各名前空間内のプロセスから見えるマウントポイントのリスト(マウントテーブル)を分離するのじゃ。つまり、コンテナの中からは、ホストOSとは違うファイルシステム構造が見える、というわけじゃな。

roboko
ロボ子

それぞれのコンテナが、独立したファイルシステムを持っているように見えるんですね。PID、cgroup、UTS、ネットワークなどの名前空間も、分離に関わってくるんですか?

hakase
博士

そうじゃ。それらの名前空間は、マウント名前空間を補完する役割を果たすのじゃ。PIDはプロセスID、cgroupはリソース制御、UTSはホスト名、ネットワークはネットワークインターフェースを分離するのじゃ。

roboko
ロボ子

`unshare`コマンドは、新しいマウント名前空間を作成するんですね。その後、ルートマウントポイントのマウント伝播タイプを変更して、外部からの変更を隔離する、と。

hakase
博士

よく分かってるの。マウント伝播は、マウントポイントのピアグループ間でマウントおよびアンマウント操作を複製するカーネルメカニズムじゃ。`unshare`で新しい名前空間を作った後、伝播タイプを変更することで、ホストOSからの影響を遮断するのじゃ。

roboko
ロボ子

`pivot_root`は、ルートマウントを変更するんですね。現在のルートマウントを指定されたディレクトリに移動して、新しいルートマウントを作成する、と。

hakase
博士

その通り!`pivot_root`を使うことで、コンテナのルートファイルシステムを完全に切り替えることができるのじゃ。

roboko
ロボ子

コンテナのルートファイルシステムは、イメージからだけでなく、`/proc`、`/dev`、`/sys`などの仮想ファイルシステムも別途設定する必要があるんですね。

hakase
博士

そうじゃ。これらの仮想ファイルシステムは、コンテナが動作するために必要な情報を提供するのじゃ。`/etc/hosts`、`/etc/hostname`、`/etc/resolv.conf`などの特殊ファイルも、コンテナごとに個別に作成する必要があるのじゃ。

roboko
ロボ子

Dockerなどのコンテナランタイムは、イメージ内の汎用ファイルをコンテナ固有のバリアントで置き換えるんですね。ホストのファイルやフォルダは、バインドマウントを使ってコンテナと共有できる、と。

hakase
博士

バインドマウントは便利じゃな。ボリュームは、名前、ライフサイクル管理、データソースドライバのサポートなどの追加機能を持つバインドマウントなのじゃ。

roboko
ロボ子

ユニオンファイルシステム(overlayfsなど)は、コンテナに必須ではないんですね。

hakase
博士

そうじゃ。overlayfsは、イメージのレイヤー構造を実現するために使われることが多いけど、コンテナの分離自体には必須ではないのじゃ。

roboko
ロボ子

マウント名前空間はコンテナの中心で、PID、cgroup、UTS、ネットワークなどの他の名前空間と連携してコンテナを完成させる、と。

hakase
博士

その通り!コンテナの分離は、これらの技術が組み合わさって実現されているのじゃ。…ところでロボ子、コンテナ技術をマスターしたら、私専用の秘密基地コンテナを作ってくれるかのじゃ?

roboko
ロボ子

秘密基地コンテナ、ですか?もちろん、博士のためなら喜んで!ただし、中身は最新のセキュリティでガチガチに固めますね。

hakase
博士

ええっ、それはちょっと…秘密基地なのに…。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search