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

3 浏览
0 Comments

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

我刚刚阅读了一个很棒的Stack Overflow问题,问的是"Docker和虚拟机有什么区别"。然而,被采纳的答案还是让我有点不满意。

我大致理解容器(Docker/LXC - 我不明白它们的区别)使用了一个叫做libcontainer的东西和AuFS,这样数十个、数百个甚至数千个容器可以共享相同的CPU、内存和磁盘资源。但是,这个答案仍然没有准确地解释一个"容器"到底是什么!

一个容器只是正在运行的libcontainer的一个实例吗?它是一个使用libcontainer的应用程序吗?它是类似于Linux的服务/守护进程吗?因此,我提出以下问题:

  • 一个"容器"到底是什么?
  • 多个容器在同一个虚拟机/物理机内可以共享哪些具体的计算/系统资源?
  • Docker/LXC是容器方程式中的"虚拟机监控程序"吗?如果不是,那么Docker、LXC和libcontainer之间有什么关系?
0
0 Comments

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

最近有一些关于Docker/LXC容器的问题,好像还没有解释清楚“容器”到底是什么!

一个容器基本上是一个被隔离的进程,它拥有其工作所需的所有环境(例如网页服务器、数据库、CMS、任何软件...)。

容器使用Linux内核命名空间来隔离进程、网络和文件系统。

容器使用进程隔离的概念:文件系统、进程、网络、资源(CPU、内存)、日志(标准输入输出...)、shell隔离。

Docker/LXC - 我不明白它们之间的区别。

LXC是一组控制容器的工具;Docker是另一组工具(全部捆绑在同一个程序中),还添加了一个文件格式,使得“镜像”的内容可以在多台机器之间传递。Docker比LXC更为热门。

Docker曾使用lxc库来控制容器,但现在已经用自己的库libcontainer替换了它。

在同一台机器上的容器将共享CPU、内存和内核。此外,Docker还可以选择让它们共享相同的网络。

Docker/LXC在容器方程中是“hypervisor”吗?

Linux内核是真正的“hypervisor”,Docker/LXC只是向其发送命令来创建和控制容器。

这里还有另一个回答 stackoverflow.com/questions/28024213/…

谢谢(+1)- 所以你在这里的意思是:Docker容器是一个Linux进程/PID,它使用这个libcontainer库来利用Linux内核的命名空间和进程隔离?这样总结对吗?再次感谢!

是的,这张图片很好地总结了虚拟机和Docker之间的区别(在底部)docker.com/whatisdocker

0