Docker / LXC容器是一个正在运行的应用程序还是内存中的东西?

时间:2015-01-22 02:13:07

标签: virtual-machine docker lxc

我刚刚阅读了提出"What is the difference between Docker and a VM?"的优秀问题。然而,接受的答案让我想要更多一点。

有点了解容器(Docker / LXC - 我没有区别)使用名为libcontainer和AuFS的东西,以便数十,数百甚至数千个容器可以共享相同的CPU,RAM和磁盘资源。但是,答案仍然没有解释完全什么是“容器”!

容器只是运行此libcontainer的实例吗?它是使用libcontainer的应用程序吗? Linuxy是服务/守护程序的过程吗?所以我问:

  • 完全是什么“容器”?
  • 多个容器可以在同一个VM /物理内共享的完全计算/系统资源是什么?
  • Docker / LXC是容器方程中的“管理程序”吗?如果没有,Docker,LXC和libcontainer之间的关系是什么?

1 个答案:

答案 0 :(得分:4)

  

答案仍然无法准确解释“容器”究竟是什么!

容器基本上是一个孤立的进程,具有其工作所需的所有环境(Web服务器,数据库,CMS,任何软件......)。

容器使用Linux内核命名空间来隔离进程,网络和文件系统。 容器使用进程隔离的概念:文件系统,进程,网络,资源(CPU,内存),日志记录(STDIN ...),shell隔离。

  

Docker / LXC - 我没有区别

LXC是一套控制容器的工具; Docker是另一组工具(都捆绑在同一个程序中),它还添加了一种文件格式,因此“图像”的内容可以在机器之间传递。 Docker比LXC更受关注。 Docker曾经使用lxc库来控制容器,但是用它自己的名为... libcontainer的库替换它。

  

多个容器可以在同一个VM /物理内共享的确切计算/系统资源是什么?

同一台机器上的容器将共享CPU,内存和内核。此外,Docker允许您选择让它们共享同一个网络。

  

Docker / LXC是容器方程中的“管理程序”吗?

Linux内核是真正的“虚拟机管理程序”,Docker / LXC正在发送命令来创建和控制容器。