Linux容器工具-LXD
LXD 是 Ubuntu 基于 LXC 技术的重构,容器天然支持非特权和分布式。采用Go语言开发并在Apache协议下授权。
LXD is a modern, secure and powerful system container and virtual machine manager. It provides a unified experience for running and managing full Linux systems inside containers or virtual machines. LXD supplies images for a wide number of Linux distributions and is built around a very powerful, yet pretty simple, REST API. LXD scales from one instance on a single machine to a cluster in a full data center rack, making it suitable for running workloads both for development and in production.

LXD allows you to easily set up a system that feels like a small private cloud. You can run any type of workload in an efficient way while keeping your resources optimized.
LXD 与 Docker 的思路不同,Docker 是 PAAS,LXD 是 IAAS。做为下一代的系统容器和虚拟机管理器,它为容器或虚拟机内运行的完整 Linux 系统提供了统一的用户体验;也为各种使用情况提供了灵活性和可扩展性,支持不同的存储后端和网络类型。主要有三个组件:
系统范围的守护进程 (lxd)
命令行客户端 (lxc)
OpenStack Nova 插件 (nova-compute-lxd)
主要特性:
直观 (简洁的 API 和快速的命令行体验)
基于镜像
在线迁移
Canonical 获得 LXD 的控制权
在归属于 Linux Containers 社区8年后的2023年7月上旬,LXD 项目的控制权现已转移到 Canonical,其不再是 Linux Containers 项目的一部分,但现在可以直接在 Canonical 网站上找到。
网站:https://ubuntu.com/lxd
Github:https://github.com/canonical/lxd
论坛:https://discourse.ubuntu.com/c/lxd/
文档:https://documentation.ubuntu.com/lxd/
LXD 是下一代的系统容器和虚拟机管理器。它为在容器或虚拟机内运行的完整 Linux 系统提供了统一的用户体验。它为各种使用情况提供了灵活性和可扩展性,支持不同的存储后端和网络类型。Linux Containers 项目在公告中表示,“LXD 项目的创建者和主要贡献者 Canonical 已经决定,在作为 Linux Containers 社区的一部分超过 8 年后,该项目现在最好还是直接归入 Canonical 自己的项目组”。虽然原项目组背后的团队对这一决定感到遗憾,但他们尊重 Canonical 的决定,并且正在转移该项目。具体来说预期的变化包括:
https://github.com/lxc/lxd 现在将变为 https://github.com/canonical/lxd
https://linuxcontainers.org/lxd 将消失,取而代之的是引导用户访问 https://ubuntu.com/lxd 的提示
LXD YouTube 频道将移交给 Canonical 团队
LinuxContainers 社区论坛上的 LXD 部分将慢慢消失,取而代之的是 Canonical 运营的 Ubuntu Discourse 论坛
LXD CI 基础设施将被转移到 Canonical 的管理之下
Linux Containers 的镜像构建将不再依赖 Canonical 提供的系统,镜像构建将限制为 x86_64 和 aarch64。
其余 Linux Containers 项目不会受到影响。尽管如上所述可用的架构较少,但目前 LXC 和 LXD 使用的镜像服务器仍将保持正常运行。有关更改的更多详细信息可访问 LinuxContainers.org。
Canonical 的 LXD 团队领导者辞职
Canonical 工程师 Stéphane Graber 于2023年7月中旬宣布辞职,此前他已经在该公司工作了 12 年,主要从事 LXD 工作。在 Graber 宣布辞职之后,Canonical 决定将 LXD 从 Linux Containers 项目中撤出,并将其重新定位为一个完整的内部项目。“在你为一家公司投入了如此多的时间之后,离开它是一件有点悲喜交加的事情,但我相信现在对我来说是正确的时机。正如我告诉同事和高层管理人员的那样,Canonical 已经不是我在 2011 年所兴奋地加入的那家公司,也不是我现如今想加入的公司,因此它也不应该是我继续工作的公司。”Graber 表示,自己最怀念与 LXD 团队一起工作的日子。对 Canonical 来说,能够拥有这样一支优秀的工程师团队来支持像 LXD 这样的项目是非常幸运的事。他还针对 Canonical 获得 LXD 控制权这件事发表了看法称:我当然希望没有发生这样的变化,我强烈认为像 LXD 这样的项目在一个更开放的社区环境中运行是更有价值的,在这个环境中每个人的意见都会受到重视,每个人的贡献,无论大小,都会受到欢迎。让 “LXD community experiment” 在 Canonical 内部被贴上失败的标签,似乎对我和多年来做出贡献的每个人都不公平。
虽然已经离开了 Canonical,但 Graber 表示自己仍将是 LXD 的活跃用户,并可能会继续提交 issue 以及偶尔进行一些修复功夫。但他不会签署 Canonical 的 CLA,如果无法避免的话,他就会停止贡献。与此同时,Graber 还宣布辞去了 Ubuntu Release team、Ubuntu Archive team 和 Ubuntu SRU team 的所有职务。但将继续担任 Ubuntu 核心开发人员,可能会偶尔贡献一些错误修复、软件包更新或新软件包。至于接下来的规划,Graber 透露现阶段不会加入任何新公司,也无意加入新公司。他计划将时间投入到此前被忽视的一些项目上,并从事自由咨询和培训之类的工作。
最新版本:5.6
LXD 5.6 现已于2022年10月上旬发布,此版本带来如下改动:
新功能和亮点
Grafana Loki 支持 Grafana Loki 支持
LXD 现在可以将其日志消息和生命周期事件流式传输到中央 Grafana Loki 服务器。这个初始实现支持基本的 HTTP 身份验证,并且在将哪些字段作为标签发送方面具有一定的灵活性。
本地存储池上的对象存储 本地存储池上的对象存储
LXD 5.5 中使用 Ceph 初始实现存储桶,LXD 5.6 版本现在扩展了该功能,以与所有其他存储驱动程序一起使用。这是得益于 MinIO 项目的出色工作,可以直接从本地存储驱动程序提供与 S3 兼容的 API。
Infiniband 对虚拟机的支持 Infiniband 对虚拟机的支持
已经为 LXD 虚拟机添加了对 Infiniband 的支持。infiniband 通过使用设备类型,与容器的工作方式相同。
项目中的网络访问受限 项目中的网络访问受限
LXD 项目上可用的配置选项和限制的数量仍在增加,现在引入了一个新的 restricted.networks.access,它采用逗号分隔的托管网络列表。设置后,此类受限项目将仅允许使用甚至列出这些网络。
instance-ready 生命周期事件
LXD 5.5 引入了 READY 可以通过 /dev/lxd 来宾 API 触发的新实例状态。 LXD 5.6 引入了一个新的 instance-ready 生命周期事件,只要实例达到该就绪状态就会发出该事件。
总有效 CPU 的指标
LXD 的指标 API 中添加了一个新指标:lxd_cpu_effective_total ,将报告实例可用的 CPU 总数。这对于准确计算 CPU 百分比使用率很有用。
项目主页:
https://github.com/lxc/lxd
LXD is a modern, secure and powerful system container and virtual machine manager. It provides a unified experience for running and managing full Linux systems inside containers or virtual machines. LXD supplies images for a wide number of Linux distributions and is built around a very powerful, yet pretty simple, REST API. LXD scales from one instance on a single machine to a cluster in a full data center rack, making it suitable for running workloads both for development and in production.

LXD allows you to easily set up a system that feels like a small private cloud. You can run any type of workload in an efficient way while keeping your resources optimized.
LXD 与 Docker 的思路不同,Docker 是 PAAS,LXD 是 IAAS。做为下一代的系统容器和虚拟机管理器,它为容器或虚拟机内运行的完整 Linux 系统提供了统一的用户体验;也为各种使用情况提供了灵活性和可扩展性,支持不同的存储后端和网络类型。主要有三个组件:
系统范围的守护进程 (lxd)
命令行客户端 (lxc)
OpenStack Nova 插件 (nova-compute-lxd)
主要特性:
直观 (简洁的 API 和快速的命令行体验)
基于镜像
在线迁移
Canonical 获得 LXD 的控制权
在归属于 Linux Containers 社区8年后的2023年7月上旬,LXD 项目的控制权现已转移到 Canonical,其不再是 Linux Containers 项目的一部分,但现在可以直接在 Canonical 网站上找到。
网站:https://ubuntu.com/lxd
Github:https://github.com/canonical/lxd
论坛:https://discourse.ubuntu.com/c/lxd/
文档:https://documentation.ubuntu.com/lxd/
LXD 是下一代的系统容器和虚拟机管理器。它为在容器或虚拟机内运行的完整 Linux 系统提供了统一的用户体验。它为各种使用情况提供了灵活性和可扩展性,支持不同的存储后端和网络类型。Linux Containers 项目在公告中表示,“LXD 项目的创建者和主要贡献者 Canonical 已经决定,在作为 Linux Containers 社区的一部分超过 8 年后,该项目现在最好还是直接归入 Canonical 自己的项目组”。虽然原项目组背后的团队对这一决定感到遗憾,但他们尊重 Canonical 的决定,并且正在转移该项目。具体来说预期的变化包括:
https://github.com/lxc/lxd 现在将变为 https://github.com/canonical/lxd
https://linuxcontainers.org/lxd 将消失,取而代之的是引导用户访问 https://ubuntu.com/lxd 的提示
LXD YouTube 频道将移交给 Canonical 团队
LinuxContainers 社区论坛上的 LXD 部分将慢慢消失,取而代之的是 Canonical 运营的 Ubuntu Discourse 论坛
LXD CI 基础设施将被转移到 Canonical 的管理之下
Linux Containers 的镜像构建将不再依赖 Canonical 提供的系统,镜像构建将限制为 x86_64 和 aarch64。
其余 Linux Containers 项目不会受到影响。尽管如上所述可用的架构较少,但目前 LXC 和 LXD 使用的镜像服务器仍将保持正常运行。有关更改的更多详细信息可访问 LinuxContainers.org。
Canonical 的 LXD 团队领导者辞职
Canonical 工程师 Stéphane Graber 于2023年7月中旬宣布辞职,此前他已经在该公司工作了 12 年,主要从事 LXD 工作。在 Graber 宣布辞职之后,Canonical 决定将 LXD 从 Linux Containers 项目中撤出,并将其重新定位为一个完整的内部项目。“在你为一家公司投入了如此多的时间之后,离开它是一件有点悲喜交加的事情,但我相信现在对我来说是正确的时机。正如我告诉同事和高层管理人员的那样,Canonical 已经不是我在 2011 年所兴奋地加入的那家公司,也不是我现如今想加入的公司,因此它也不应该是我继续工作的公司。”Graber 表示,自己最怀念与 LXD 团队一起工作的日子。对 Canonical 来说,能够拥有这样一支优秀的工程师团队来支持像 LXD 这样的项目是非常幸运的事。他还针对 Canonical 获得 LXD 控制权这件事发表了看法称:我当然希望没有发生这样的变化,我强烈认为像 LXD 这样的项目在一个更开放的社区环境中运行是更有价值的,在这个环境中每个人的意见都会受到重视,每个人的贡献,无论大小,都会受到欢迎。让 “LXD community experiment” 在 Canonical 内部被贴上失败的标签,似乎对我和多年来做出贡献的每个人都不公平。
虽然已经离开了 Canonical,但 Graber 表示自己仍将是 LXD 的活跃用户,并可能会继续提交 issue 以及偶尔进行一些修复功夫。但他不会签署 Canonical 的 CLA,如果无法避免的话,他就会停止贡献。与此同时,Graber 还宣布辞去了 Ubuntu Release team、Ubuntu Archive team 和 Ubuntu SRU team 的所有职务。但将继续担任 Ubuntu 核心开发人员,可能会偶尔贡献一些错误修复、软件包更新或新软件包。至于接下来的规划,Graber 透露现阶段不会加入任何新公司,也无意加入新公司。他计划将时间投入到此前被忽视的一些项目上,并从事自由咨询和培训之类的工作。
最新版本:5.6
LXD 5.6 现已于2022年10月上旬发布,此版本带来如下改动:
新功能和亮点
Grafana Loki 支持 Grafana Loki 支持
LXD 现在可以将其日志消息和生命周期事件流式传输到中央 Grafana Loki 服务器。这个初始实现支持基本的 HTTP 身份验证,并且在将哪些字段作为标签发送方面具有一定的灵活性。
本地存储池上的对象存储 本地存储池上的对象存储
LXD 5.5 中使用 Ceph 初始实现存储桶,LXD 5.6 版本现在扩展了该功能,以与所有其他存储驱动程序一起使用。这是得益于 MinIO 项目的出色工作,可以直接从本地存储驱动程序提供与 S3 兼容的 API。
Infiniband 对虚拟机的支持 Infiniband 对虚拟机的支持
已经为 LXD 虚拟机添加了对 Infiniband 的支持。infiniband 通过使用设备类型,与容器的工作方式相同。
项目中的网络访问受限 项目中的网络访问受限
LXD 项目上可用的配置选项和限制的数量仍在增加,现在引入了一个新的 restricted.networks.access,它采用逗号分隔的托管网络列表。设置后,此类受限项目将仅允许使用甚至列出这些网络。
instance-ready 生命周期事件
LXD 5.5 引入了 READY 可以通过 /dev/lxd 来宾 API 触发的新实例状态。 LXD 5.6 引入了一个新的 instance-ready 生命周期事件,只要实例达到该就绪状态就会发出该事件。
总有效 CPU 的指标
LXD 的指标 API 中添加了一个新指标:lxd_cpu_effective_total ,将报告实例可用的 CPU 总数。这对于准确计算 CPU 百分比使用率很有用。
项目主页:
https://github.com/lxc/lxd