プロジェクト

全般

プロフィール

コンテナ

情報収集・整理

Linuxにおけるコンテナ技術

LXC: Linux Containers

  • Linuxカーネルのコンテナ機能のためのユーザースペースのインタフェース
  • 単一のLinuxマシン上で、複数のLinux OSを生成し実行するOS仮想化技術
  • カーネル空間はマシン上(Host Linux OS)で共有し、ユーザー空間にコンテナを複数構築する
  • LinuxカーネルのNamespaceを用いてプログラムを分離
    • プロセスID、ネットワーク、マウント(ファイルシステム)、IPC、ユーザー(UID, GID)を分離
  • CGroupsで、OSが管理する各種リソースをグループ化し、グループ毎に優先度やリソースを制限、グループを隔離
    • ファイルシステム、プロセス、CPUリソース、メモリ、デバイス、ネットワーク
  • liblxcライブラリ、API言語バインディング(Python3, lua, Go, ruby, Haskell)、コンテナ操作ツール、コンテナテンプレート

LXD

  • システムコンテナ(LXC)と仮想マシンを便利に使う管理機能など。Canonical社主導で開発

Docker

  • 初期はLXCを用いて実現していたが、後にlibcontainerに置換える実装となった
  • 1つのコンテナは1つのプロセスを実行(原則)
    • PID1がdockerコンテナで起動したプロセス(Webサーバーとか)となる。親プロセスがkillされた孫プロセスはゾンビプロセスとなり、PID1に収容されてしまう

containerd

https://containerd.io/

コンテナに関する仕様

コンテナの標準化として、Open Container Initiative Runtime Specification が規定されています。


約1年前に更新