在研究和学习有关容器的更多信息时,Docker 似乎拥有出色的文档和用例示例以及分步指南。而另一方面,LXD 只有一个简单的入门指南。有哪些来源有关于 LXD 的良好文档可供我查看?
答案1
Canonical Ltd 的 LXD 技术主管 Stéphane Graber 还发表了一系列精彩的博客文章,发布在这里:
https://www.stgraber.org/2016/03/11/lxd-2-0-blog-post-series-012/
和这里:
http://insights.ubuntu.com/2016/03/14/the-lxd-2-0-story-prologue/
答案2
LXC 与 LXD
博客文章内容丰富,适合入门阅读,但入门后它们就不是好的文档了。如果你和我一样,在阅读了几篇常见的博客文章后,你可能对 Docker 和 LXC/LXD 之间的区别就很清楚了。但旧的 LXC 项目和新的 LXD 项目之间的区别对我来说一点也不清楚,而且我发现的大多数页面都没有用我能理解的方式很好地解释它。他们大多试图消除应用程序容器(Docker)和操作系统容器(LXC/LXD)之间的混淆。然后我发现了这篇博客文章: lxd 适合于哪里
您现在可能已经知道,所有这些工具(Docker/LXC/LXD)都使用命名空间和 cgroups 等常见内核功能,问题只是用户空间决定如何使用它们。根据我的理解,上述文章的摘要重点介绍了 LXC 与 LXD 的演变:
- LXC 最初是为了测试新的内核功能而创建的;因此它是 shell 脚本和 C 程序的大杂烩(至今仍通过“旧”的 LXC 命令行工具使用)。
- 然后将其重构为一个库。现有的 LXC 用户空间命令行工具现在使用此库。
- LXD 是一种与该库交互的全新方式,不受与旧 LXC 命令行工具向后兼容的限制。因此,它更易于使用且功能更强大。
如果任何人(例如维护者)发现上述错误,请随时纠正我的答案。:)
关于 libvirt-lxc 的一些说明
此外,如果您正在考虑libvirt-lxc
(例如如果您已经在使用libvirt
KVM):
- Red Hat 已弃用此功能:https://access.redhat.com/articles/1365153
- Upstream 表示他们仍将继续致力于此:https://www.redhat.com/archives/libvirt-users/2015-August/msg00026.html
- 尽管名字里
libvirt-lxc
有,lxc
它实际上并没有使用lxc
而是直接使用内核功能。因此,尽管命名混乱,但不要将此libvirt
驱动程序与混淆。参考:lxc
http://libvirt.org/drvlxc.html (请注意,我认为 proxmox做使用lxc
适当的工具,但不要使用较新的lxd
工具)。 - Stéphane Graber 认为,
libvirt
与容器一起使用不太合适,尽管有人可以编写一个libvirt-lxd
,但他认为这也不太合适。总结:libvirt
旨在管理虚拟机,而容器不是虚拟机,因此事情变得混乱,您只支持一些共同的功能。参考:https://lists.linuxcontainers.org/pipermail/lxc-devel/2014-November/010820.html - 为了强调前面的观点,使用 创建新容器并不容易
libvirt-lxc
。例如,您必须为要创建的新容器提供现有 rootfs 的路径,并且不支持libvirt-lxc
启动它。因此,您只能使用外部工具(例如lxc-create
从模板创建新容器),然后libvirt-lxc
使用刚刚创建的现有目录创建新容器,这让我不禁要问:“为什么要大惊小怪,libvirt-lxc
而不是直接使用lxd
?”
LXD 文档
回到你的问题,我尝试收集所有我能找到的关于 LXD 的参考文档。这里有一些不错的文档:
https://github.com/lxc/lxd/tree/master/doc
尤其:
configuration.md
有一个很好的可能的配置选项参考列表。imagehandling.md
讨论操作系统映像如何在本地缓存。lxd-ssl-authentication.md
讨论了 REST API 以及它如何通过本地 UNIX 套接字和可选的 HTTPS 公开,以及如何保护它的安全。storage-backends.md
讨论每个存储后端的局限性和配置。userns-idmap.md
lxd 默认使用非特权容器,这意味着容器 UID/GID 必须映射到主机 UID/GID;本文讨论了这一点。- 剩余的许多文档并不那么重要,或者更适合开发人员。
以上链接来自lxd
上游的主分支,因此您可能需要检查doc
目录中您实际安装的软件包的源,这样您就不会意外使用尚未安装的一些新功能。
实际上没有很多手册页,但是我发现lxd
和lxd-client
包中包含以下内容:
LXC(1)
- 与服务器守护进程通信的客户端程序。目前(2016 年 5 月 14 日)相当无用且信息量不大。希望将来可以为该工具制作一系列手册页,就像btrfs
手册页一样。LXD(1)
- 服务器守护进程命令行。
当然还有服务器指南页面:https://help.ubuntu.com/lts/serverguide/lxd.html
最后,请记住 lxd 基于 lxc 库(但不是旧的 lxc 命令行工具)。这意味着 lxc 配置仍然可以直接完成,例如使用raw.lxc
lxd 中的配置选项。因此,对底层 LXC 配置的一些引用是有用的,但请记住,如果可能的话,应该避免这样做,以避免与 LXD 发生冲突(例如,如果您在 LXD 和 LXC 中设置了相同的配置项)。如果需要,您可以浏览手册页来找到这些内容:https://linuxcontainers.org/lxc/manpages/
答案3
目前我能找到的学习和获得 LXD 经验的最好的方法是使用在线演示。
https://linuxcontainers.org/lxd/try-it/
该演示将指导您创建、销毁和删除 LXD 容器。您也可以直接安装 LXD 并在本地运行,但他们有一个云 VM,您可以直接从站点使用。
除此之外,深入研究手册页并使用--help将显示一些额外的信息。
也许一旦 LXD 得到进一步发展并被广泛采用,我们就会看到丰富的文档发布。