怎么样" lxd"与lxc / docker不同?

时间:2015-05-25 02:39:18

标签: docker lxc lxd

问题

  • lxd如何在容器内提供完整的操作系统功能,而不仅仅是单个进程?
  • 与lxc / docker + wrappers有何不同?
  • 是否类似于使用docker + supervisor / wrapper脚本启动的容器,以在一个容器中包含多个进程?

换句话说:

  • 对于lxd我能做什么,我不能用lxc和docker上的一些包装器做什么?
  • 为什么只有在ubuntu中才能使用主线内核功能(名称空间和cgroup)?

3 个答案:

答案 0 :(得分:12)

  

lxd如何在容器中提供完整的操作系统功能,而不仅仅是单个进程?

容器是隔离的Linux系统,它使用cgroups功能来限制Linux内核中的CPU /内存/网络/等,而无需启动完整的虚拟机。

LXD使用liblxc(基于LXC)提供的功能,从而实现完整操作系统功能。

  

它与lxc / docker + wrappers有何不同?

LXD使用LXC的liblxc。 Docker更专注于应用程序,只是容器内部应用程序的主要流程(现在默认使用libcontainer,Docker确实首先使用liblxc)

  

是否类似于使用docker + supervisor / wrapper启动的容器       脚本在一个容器中包含多个进程?

类似的东西。 LXD和Docker之间的区别在于Docker是一个应用程序容器,LXD是一个系统容器。 LXD在容器内使用upstart / systemd之类的主要进程,默认情况下,它已准备好成为具有非常轻的内存/ CPU使用率的完整VM环境。是的,您可以使用supervisorctl / runit构建docker,但是您需要手动此过程。您可以检查http://phusion.github.io/baseimage-docker/中如何在容器内执行类似操作。

  

对于lxd,我怎么能用lxc和docker上的一些包装器做什么呢?

实时迁移容器,使用容器(如完整虚拟机),精确配置专用cpu内核/内存/网络I / O以便在容器中使用,以非特权模式运行容器进程(容器内的根进程!=默认情况下,Docker在特权模式下工作,现在只在Docker 1.10中实现非特权模式,但是你需要检查(并且可能重写)你的Dockerfiles,因为很多东西在非特权模式下都不能工作。

LXD和Docker是不同的东西。 LXD在容器中为您提供“完整操作系统”,您可以使用在VM中工作的任何部署工具在LXD中部署应用程序。使用Docker,您的应用程序位于容器内,您需要使用不同的工具在Docker中部署应用程序并执行性能指标。

  

为什么只有在ubuntu中才能使用主线内核功能(命名空间和cgroup)?

如果需要,LXD可以获得Canonical的商业支持,但是您可以在Centos 7中构建LXD,使用ArchLinux(内核修补)检查https://github.com/lxc/lxd。 Gentoo现在支持LXD https://wiki.gentoo.org/wiki/LXD

答案 1 :(得分:11)

img基于LXD,其目的是通过增加的功能控制某些liblxc,例如快照或实时迁移。 lxcLXD相关联,并且以操作系统为中心。

LXC更加以应用为中心,基于Docker的开头,但现在独立于LXC,它可以使用LXC或其他任何内容。 openvz仅关注lib和依赖的应用程序,而不是OS。

再看看这个: https://www.flockport.com/lxc-vs-lxd-vs-docker-making-sense-of-the-rapidly-evolving-container-ecosystem/

问候。

答案 2 :(得分:2)

LXD与LXC配合使用,并非旨在取代或取代LXC。相反,它旨在通过添加支持REST API的后端守护程序以及通过REST API与本地守护程序和远程守护程序一起使用的简单CLI客户端,使基于LXC的容器更易于使用。

LXD更像是docker host。