Docker与虚拟机和LXC的关系

4
我对Linux容器(LXC)的理解是,它为Linux系统提供了本地超级管理程序,类似于Windows 8中引入的Hyper-V。所谓“本地超级管理程序”,指的是Linux系统能够在其中托管客户机虚拟机(VM),而无需安装任何专门的虚拟化软件。
我对Docker的理解是它某种程度上构建在LXC之上,并允许应用程序开发人员定义:
1. VM /节点的确切应用程序堆栈,包括操作系统(OS)、OS的精确配置和调整以及安装/配置/部署到OS上的任何工具或应用程序;
2. 运行此VM /节点所需的确切资源要求,包括CPU要求、内存/磁盘/网络要求、负载平衡和复制要求等。然后Docker将使用这些声明的要求作为基线来确定在哪些节点上运行容器。
首先,如果我对LXC或Docker的理解有误,请您纠正我!
假设我对LXC或Docker的理解比较正确,我想问:
1. Docker与vmWare或Xen虚拟机之间的关系是什么? Docker是否“位于”虚拟化层之上?换句话说,是否有不同虚拟化平台(如vmWare、Xen、kvm等)的“Docker绑定”,我可以将适用于任何Docker化平台的Docker容器部署到其中?
2. LXC与Docker之间的关系是什么? Docker是否只是扩展了LXC,还是一个完全不同的概念?如果Docker是LXC的扩展,那么它扩展了哪些方面?
1个回答

2
LXC和Docker的关系 -> Docker起初使用LXC,但自从Docker 0.9版本开始,Docker使用libcontainer而不再使用lxc-start来启动容器。相对于LXC,Docker提供了REST API,允许从注册表中移动镜像,允许使用Dockerfiles构建...

感谢@user2915097 (+1)的回答 - 但是关于我的第一个问题(Docker与虚拟化平台,例如vmWare或Xen的关系)呢?另外,对于您回答的问题,您能详细说明一下Docker“注册表”是什么吗?我还对libcontainerlxc-start之间的关系感到困惑 - 它们是竞争库吗?再次感谢! - smeeb
2
Docker与VMWare或Xen没有关系,它是一个不同的概念,您只拥有运行进程的最低限度,文件系统隔离(每个容器都有自己的根文件系统),进程隔离,网络隔离(分离的虚拟接口和IP地址),资源隔离,特定的日志记录(STDIN、STDOUT和STDERR可用)。 - user2915097
1
容器默认具有10 GB的磁盘空间,可以进行修改,请参见http://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/。而且,`docker run`允许您指定分配给容器的CPU和内存份额,请参见https://docs.docker.com/reference/run/#runtime-constraints-on-cpu-and-memory以及这篇优秀的文章https://goldmann.pl/blog/2014/09/11/resource-management-in-docker/。 - user2915097
1
还可以看看这个IBM的人做的比较Docker和KVM的基准测试,链接在这里:http://bodenr.blogspot.fr/2014/05/kvm-and-docker-lxc-benchmarking-with.html - user2915097
再次感谢@user2915097(+3),那么Docker是我应该安装在现有的VM /节点上(我们使用vSphere),还是它会以某种方式集成,比如vSphere,然后抽象出我们不必担心特定VM的需求? - smeeb
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接