web-dev-qa-db-ja.com

LXCとlibcontainerの違い

ドッカーのドキュメントを調べていると、ドッカーがLXCではなくlibcontainerを使用していることがわかりました。 libcontainerがLXCよりも優れている(もしそうであれば)について誰かが考えていますか?

20
Yogesh Jilhawar
  • Linux Containers(LXC) はdocker 0.9の前に使用されました(On 2014年3月13日、バージョン0.9のリリースで 、Dockerはデフォルトの実行環境としてLXCを削除し、それを置き換えました独自のlibcontainerライブラリ)をdockerによる1つの実行ドライバーとして、Linuxカーネルの封じ込め機能用のユーザースペースインターフェイスを提供します。 Linuxに非常に固有です

  • libcontainer(現在 opencontainers/runc )は、より広範な分離テクノロジーをサポートするための抽象化です この記事で説明

http://blog.docker.com/wp-content/uploads/2014/03/docker-execdriver-diagram.png

つまり、Dockerは元の実装からそれ自体を抽象化し、他のベンダー(CoreOSなど)が独自のバージョンのコンテナを実装できるようにします


注:それ以来、( runc、containerd、dockerの違いは何ですか? )と表示されます。

2016年、コンテナスペースは活況を呈し、Dockerはモノリスを個別のパーツに分割することを決定しました。その一部は他のプロジェクトでも構築できます—このようにcontainerdが発生しました。それはDocker 1.11でした(かなり古い歴史です)。
Containerdは、さまざまなコンテナーランタイムおよびOSのAPIファサードとして機能するデーモンです。 containerd,を使用すると、syscallを操作する必要がなくなり、代わりに、スナップショットやコンテナーなどの上位レベルのエンティティを操作します-残りは抽象化されます。
_containerdをさらに深く理解したい場合は、GitHubリポジトリに design documentation があります。
内部では、containerdruncを使用してすべてのLinux作業を行います

詳細は「 containerdとrunCの比較 」を参照してください

containerd

31
VonC

Dockerがlibcontainerを開始した理由を完全に理解するには、このリンクをたどることをお勧めします

http://www.zdnet.com/article/docker-libcontainer-unifies-linux-container-powers/

1
Viswesn

私が知っているように.. LXCは、Dockerエンジンがコンテナ/名前空間などを実行するためのデフォルトの実行ドライバでした。 Dockerは「libcontainer」を開発し、Dockerエンジンに追加しました。私が間違っているなら私を訂正してください。

0
user6662643