“lxd”与lxc / docker有什么不同?

问题

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

换一种说法:

  • 我可以用lxd做些什么,我不能用lxc和docker做一些包装?
  • 为什么只有在使用主线内核function(命名空间和cgroup)的情况下才能在Ubuntu上使用?

LXD基于liblxc ,其目的是通过增加的function来控制某些lxc ,如快照或实时迁移。 LXD链接到LXC ,它们以操作系统为中心。

Docker更多的是以应用程序为中心,基于LXC的开始,但现在独立于LXC ,它可以使用openvz或其他任何东西。 Docker只关注lib和dependency的应用,而不是OS。

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

问候。

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

容器是独立的Linux系统,在Linux内核中使用cgroupsfunction来限制cpu / memory / network / etc,而不需要启动一个完整的虚拟机。

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

它与lxc / docker +包装器有什么不同?

LXD使用LXC的liblxc。 Docker更专注于应用程序,只是容器内的应用程序的主要过程(默认情况下使用libcontainer,Docker先使用liblxc)

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

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

我可以用lxd做些什么,我不能用lxc和docker做一些包装?

实时迁移容器,像完整的虚拟机一样使用你的容器,在你的容器中使用专用的cpu核心/内存/networkingI / O的精确configuration,以非特权模式运行容器进程(容器中的根进程!你的主机)默认情况下,Docker在特权模式下工作,现在只有在Docker 1.10中它们实现了非特权模式,但是你需要检查(也许是重写)你的Docker文件,因为许多事情在非特权模式下不能工作。

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

为什么只有在使用主线内核function(命名空间和cgroup)的情况下才能在Ubuntu上使用?

如果需要LXD有Canonical的商业支持,但是你可以在CentOS 7中构buildLXD,ArchLinux(带有内核补丁)检查https://github.com/lxc/lxd 。 Gentoo现在支持LXD https://wiki.gentoo.org/wiki/LXD

LXD与LXC配合使用,不能替代或取代LXC。 相反,通过添加一个支持REST API的后端守护程序和一个直接的CLI客户端(通过REST API与本地守护进程和远程守护进程协同工作),可以使基于LXC的容器更易于使用。

LXD更像docker主机。