我刚刚读了一个非常好的SO问题,询问“Docker和VM之间有什么区别?”。但是,被接受的答案让我只想要一点点。
我 有点 理解一个容器(Docker/LXC-我没什么不同),使用一种叫做libcontainerAuFS的东西,以便数十,数百甚至数千个容器可以共享相同的CPU,RAM和磁盘资源。但是,答案仍然不能 完全 解释什么是“容器”!
libcontainer
容器只是这种libcontainer运行的一个实例吗?它是使用的应用程序libcontainer吗?Linuxy有点像服务/守护进程吗?所以我问:
答案仍然不能完全解释什么是“容器”!
容器基本上是一个独立的过程,具有其工作所需的所有环境(Web服务器,数据库,CMS,任何软件…)。
容器使用Linux内核名称空间来隔离进程,网络和文件系统。容器使用进程隔离的概念:文件系统,进程,网络,资源(CPU,内存),日志记录(STDIN …),外壳隔离。
Docker / LXC-我没什么不同
LXC是一组用于控制容器的工具;Docker是另一套工具(所有工具都捆绑在同一个程序中),它还添加了一种文件格式,因此“图像”的内容可以在计算机之间传递。Docker比LXC更受关注。Docker曾经使用lxc库来控制容器,但用自己的名为libcontainer的库代替了它。
多个容器可以在同一虚拟机/物理设备中共享的确切计算/系统资源是什么?
同一台计算机上的容器将共享CPU,内存和内核。此外,Docker使您可以选择让它们共享同一网络。
Docker / LXC是容器方程式中的“管理程序”吗?
Linux内核是真正的“管理程序”,并且Docker / LXC向其发送命令以创建和控制容器。