Skip to content

1-5. 改めて: コンテナって何だ?

コンテナは難しくない

さあ、ここまでの基礎を理解していれば、冒頭のコンテナの定義が何を示しているか理解できるはずです。

プロセスツリーのある枝から先を、Namespaceやchroot/pivot_root、cgroupなどの機能を使って隔離して実行したもの

コンテナのイメージ

上図のように、あるプロセスを隔離すれば、その子プロセスを含めたグループがコンテナとして振る舞うのです。
言い換えれば、あるプロセスに対して

  • Namespaceでリソース管理をホストと分ける
  • chroot/pivot_rootでルートディレクトリを変更する
  • cgroupで計算リソース制限をかける
  • その他Seccompなどセキュリティ面の制限をかける

などの処理を施せば、それはもう立派なコンテナなのです。

コンテナランタイムに求められる役割

プロセスを隔離し、コンテナに仕立て上げるのがコンテナランタイムの仕事です。
しかし、それだけでは便利で実用的なコンテナとはなりません。

今のコンテナを取り巻くエコシステムが複雑に見えるのは、コンテナを便利に扱うため、様々な個人・団体が努力を重ねてきた証なのです。
次節では座学編のまとめとして、今のコンテナランタイムがどのように構成されているか学んでいきましょう。