换句话说:
答案 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
,例如快照或实时迁移。 lxc
与LXD
相关联,并且以操作系统为中心。
LXC
更加以应用为中心,基于Docker
的开头,但现在独立于LXC
,它可以使用LXC
或其他任何内容。 openvz
仅关注lib和依赖的应用程序,而不是OS。
问候。
答案 2 :(得分:2)
LXD与LXC配合使用,并非旨在取代或取代LXC。相反,它旨在通过添加支持REST API的后端守护程序以及通过REST API与本地守护程序和远程守护程序一起使用的简单CLI客户端,使基于LXC的容器更易于使用。
LXD更像是docker host。