ドッカーのドキュメントを調べていると、ドッカーがLXCではなくlibcontainerを使用していることがわかりました。 libcontainerがLXCよりも優れている(もしそうであれば)について誰かが考えていますか?
Linux Containers(LXC) はdocker 0.9の前に使用されました(On 2014年3月13日、バージョン0.9のリリースで 、Dockerはデフォルトの実行環境としてLXCを削除し、それを置き換えました独自のlibcontainerライブラリ)をdockerによる1つの実行ドライバーとして、Linuxカーネルの封じ込め機能用のユーザースペースインターフェイスを提供します。 Linuxに非常に固有です
libcontainer(現在 opencontainers/runc
)は、より広範な分離テクノロジーをサポートするための抽象化です この記事で説明
つまり、Dockerは元の実装からそれ自体を抽象化し、他のベンダー(CoreOSなど)が独自のバージョンのコンテナを実装できるようにします。
注:それ以来、( runc、containerd、dockerの違いは何ですか? )と表示されます。
2016年、コンテナスペースは活況を呈し、Dockerはモノリスを個別のパーツに分割することを決定しました。その一部は他のプロジェクトでも構築できます—このように
containerd
が発生しました。それはDocker 1.11でした(かなり古い歴史です)。
Containerdは、さまざまなコンテナーランタイムおよびOSのAPIファサードとして機能するデーモンです。containerd,
を使用すると、syscallを操作する必要がなくなり、代わりに、スナップショットやコンテナーなどの上位レベルのエンティティを操作します-残りは抽象化されます。
_containerd
をさらに深く理解したい場合は、GitHubリポジトリに design documentation があります。
内部では、containerd
はrunc
を使用してすべてのLinux作業を行います。
詳細は「 containerdとrunCの比較 」を参照してください
Dockerがlibcontainerを開始した理由を完全に理解するには、このリンクをたどることをお勧めします
http://www.zdnet.com/article/docker-libcontainer-unifies-linux-container-powers/
私が知っているように.. LXCは、Dockerエンジンがコンテナ/名前空間などを実行するためのデフォルトの実行ドライバでした。 Dockerは「libcontainer」を開発し、Dockerエンジンに追加しました。私が間違っているなら私を訂正してください。