买了台云服务器12核12G,只跑一些应用的话太浪费了,上次使用docker来实现虚拟化占用还是太高了,不够轻度,了解到lxc和lxd功能也能实现。
1. LXC、LXD、Docker那个好
LXC 是底层容器运行时与基础工具集,LXD 是基于 LXC 的高级容器管理系统(轻量级容器管理程序 /hypervisor),提供更友好的用户体验、REST API、集群能力和企业级特性。
LXC 是容器技术的基础,提供了操作系统级虚拟化的核心能力;LXD 则是在此基础上构建的现代化管理平台,降低了容器使用门槛,扩展了企业级功能。简单来说,LXC 是引擎,LXD 是带仪表盘、方向盘和导航系统的完整汽车。
LXD 更适合运行完整的系统级服务 / 应用栈,Docker 更适合打包单进程微服务,二者没有绝对的 “好坏”,核心取决于你的业务场景和技术需求。
LXD 和 Docker 都是 Linux 容器技术,但设计目标、架构和适用场景差异极大,下面从多个维度详细对比。
典型适用场景
适合用 LXD 的场景
替代虚拟机:需要运行完整 Linux 系统,且对资源开销敏感(LXD 容器比 KVM 虚拟机更轻量)。
多服务部署:单容器内运行多个关联服务(如 Web 服务器 + 数据库 + 缓存),模拟生产环境整机。
系统级测试:测试操作系统补丁、内核特性、多服务协同工作的场景。
物理机迁移:需要将物理机 / 虚拟机无缝迁移到容器环境,或跨节点迁移容器。
资源敏感的基础设施:嵌入式系统、边缘计算设备,需要低开销的系统隔离。
适合用 Docker 的场景
微服务架构:将应用拆分为独立微服务,每个服务打包成一个容器,便于独立部署和扩缩容。
持续集成 / 持续部署(CI/CD):应用打包成镜像后,可在开发、测试、生产环境无缝流转。
单应用分发:快速部署单个应用(如 Nginx、Redis、MySQL),直接拉取官方镜像启动。
云原生部署:对接 Kubernetes 等云原生编排平台,实现应用的自动扩缩容、故障自愈。
2. LXD安装
宿主机推荐使用Ubuntu(尤其是 LTS 版本),其次是 Debian,由于 LXD 本身就是由 Canonical 公司(Ubuntu 的母公司)主导开发的,因此在 Ubuntu 上,LXD 具有最高的兼容性、最快的更新速度以及最完善的文档支持;首选推荐:Ubuntu 22.04 / 24.04 LTS。
宿主机配置建议表
Ubuntu 24.04 LTS安装LXD
Ubuntu 24.04默认已经自带了LXD环境,一般是5.0.x的LXD LTS长期稳定版,使用lxc version可以查看版本,但是还是建议升级到最新稳定版。
# 更新软件包列表(必须先执行这一步)
sudo apt update
# 安装 ZFS 工具
sudo apt install zfsutils-linux -y
# 切换到最新稳定版
sudo snap refresh lxd --channel=latest/stableLXD初始化,初始化的时候会问较多的选项,保持默认即可,也可以自行翻译配置比较重要的几个选项。
sudo lxd init当问到
What storage backend would you like to use?时: 输入zfs。当问到
Create a new ZFS pool?时: 选择yes。当问到
Would you like to use an existing empty block device?时:如果你有空余硬盘,选
yes。如果你只想在当前系统磁盘里分出一块空间,选
no,然后指定一个大小(例如20GiB),LXD 会创建一个虚拟的磁盘文件来运行 ZFS。
3. 访问WEB控制台
# 8443端口任意修改
lxc config set core.https_address :8443
# 为了确保配置生效,建议重启一下 LXD 守护进程
sudo snap restart lxd
# 访问 Web 界面
https://你的服务器IP:84434. 常见问题
一、开机之后lxd容器无法获取IP地址?
防火墙需要设置,放通网桥流量。
ufw allow in on lxdbr0
ufw route allow in on lxdbr0
ufw route allow out on lxdbr0
# 重启lxd
systemctl restart snap.lxd.daemon # 如果是 snap 安装的
# 或者
systemctl restart lxd二、创建端口转发
1.记住容器的IP地址
2.在WEB UI选择networking

3.找到lxdbr0或者自定义的桥接lxd网卡


4.找到Create forward

这样即可通过访问宿主机的5223端口转发到容器的22端口