Docker/LXC 容器是正在运行的应用程序还是内存中的东西?
Posted
技术标签:
【中文标题】Docker/LXC 容器是正在运行的应用程序还是内存中的东西?【英文标题】:Is a Docker/LXC container a running app or something in-memory? 【发布时间】:2015-03-20 17:48:59 【问题描述】:我刚刚阅读了询问 "What is the difference between Docker and a VM?" 的优秀 SO 问题。然而,接受的答案让我只想要一点点。
我有点了解一个容器(Docker/LXC - 我不明白其中的区别)使用名为 libcontainer
和 AuFS 的东西,以便数十、数百甚至数千个容器可以共享相同的 CPU、RAM 和磁盘资源。但是,答案仍然没有确切地解释什么是“容器”!
容器只是这个libcontainer
运行的一个实例吗?它是使用libcontainer
的应用程序吗?它是像服务/守护进程这样的 Linuxy 吗?所以我问:
libcontainer
之间是什么关系?
【问题讨论】:
【参考方案1】:答案仍然没有准确解释什么是“容器”!
容器基本上是一个独立的进程,具有其工作所需的所有环境(网络服务器、数据库、CMS、任何软件......)。
容器使用 Linux 内核命名空间来隔离进程、网络和文件系统。 容器使用进程隔离的概念:文件系统、进程、网络、资源(CPU、内存)、日志记录(STDIN...)、shell 隔离。
Docker/LXC - 我看不出区别
LXC 是一套控制容器的工具; Docker 是另一组工具(全部捆绑到同一个程序中),它还添加了一种文件格式,因此“图像”的内容可以在机器之间传递。 Docker 比 LXC 更受关注。 Docker 曾经使用 lxc 库来控制容器,但将其替换为自己的库,名为...libcontainer。
多个容器可以在同一个虚拟机/物理机内共享的确切计算/系统资源是什么?
同一台机器上的容器将共享 CPU、内存和内核。此外,Docker 允许您选择让它们共享同一个网络。
Docker/LXC 是容器方程式中的“管理程序”吗?
Linux 内核是真正的“管理程序”,Docker/LXC 正在向它发送命令来创建和控制容器。
【讨论】:
也可以在这里查看我的其他答案***.com/questions/28024213/… 感谢@user2915097 (+1) - 确认您在这里所说的内容:Docker 容器是一个 Linux 进程/pid,使用这个libcontainer
库利用 Linux 内核命名空间和进程隔离?是这样总结的吗?再次感谢!
是的,这张图总结的很好,虚拟机vs docker(在底部)docker.com/whatisdocker以上是关于Docker/LXC 容器是正在运行的应用程序还是内存中的东西?的主要内容,如果未能解决你的问题,请参考以下文章