Lxc
docker 正在使用哪個容器實現
Docker 基於 Linux 容器和控制組。但我想知道 docker 使用的是哪種 Linux 容器實現?它是使用 Linux 的本機/預設(LXC 執行環境)還是他們有自己的實現?
Docker 在 2014 年從使用 LXC 切換後使用了自己的 libcontainer 庫。
LXC 使用他們的 (www.linuxcontainers.org) liblxc 庫。
這兩個庫都使用了 linux 核心命名空間技術。LWN 有一個關於命名空間的多部分部落格: https ://lwn.net/Articles/531114/
對於 Docker 和 LXC,容器技術的核心實現是相同的:它是由 Linux 核心本身提供的。核心提供了多種機制,例如命名空間(mount、network、pid、…)、cgroups 等。所以 docker 和 lxc 都使用這些特性來簡化容器管理和自動化特定的案例。
這意味著如果沒有 linux 核心提供的功能,docker 和 lxc 都不會存在。lxc 和 docker 之間的主要區別在於使用了哪一組 linux 核心功能/api,以及支持哪些工作流和使用場景。