制作 Ubuntu 容器,主要根据你的具体需求来选择合适的工具:LXC/LXD 适合构建一个完整的、类 似虚拟机的系统环境,而 Docker 则擅长打包和运行单个应用。
主流方案的对比

制作 Docker 应用容器
Docker是“应用容器”的行业标准,它通过一个文本文件(Dockerfile)来精确控制镜像 的构建,能保证应用在任何地方运行时的环境都是一致的。
安装 Docker
在Ubuntu主机上执行以下命令完成安装:
sudo apt update && sudo apt install docker.io -y
sudo systemctl start docker && sudo systemctl enable docker
sudo usermod -aG docker ${USER} # 将当前用户加入docker组,之后可能需重新登录
编写 Dockerfile
创建一个新目录,并在其中新建一个名为 Dockerfile(无后缀)的文件,内容如下:
# 1. 指定基础镜像,这里使用 Ubuntu 22.04 官方镜像
FROM ubuntu:22.04
# 2. 设置环境变量,避免交互式操作提示
ENV DEBIAN_FRONTEND=noninteractive
# 3. 更新软件源,安装所需软件(如 vim, curl),并清理缓存以减小镜像体积
RUN apt-get update && \
apt-get install -y vim curl && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# 4. 设置工作目录
WORKDIR /app
# 5. 将当前目录(宿主机)下的所有内容复制到容器的 /app 目录
COPY . /app
# 6. 声明容器运行时监听的端口
EXPOSE 8080
# 7. 指定容器启动时执行的命令
CMD ["bash"]
构建与运行
在 Dockerfile 所在目录下执行命令:

使用 LXD/LXC 搭建系统容器
LXD 是 Ubuntu 官方主推的系统容器方案,它构建于 LXC 之上,提供了更友好的管理和 API 接口,使用体验类似虚拟机,但性能损耗极小。lxc 是 LXD 的命令行工具,用于创建和管理这些容器。
安装与初始化 LXD
LXD 通常通过 Snap 包安装,这是最简单的方式

创建并启动 Ubuntu 容器
执行以下命令创建一个 Ubuntu 22.04 的容器:
管理容器
查看容器列表:lxc list
进入容器内部:lxc exec my-container bash
在容器内执行命令:lxc exec my-container -- apt update
停止容器:lxc stop my-container
启动已存在的容器:lxc start my-container
删除容器:lxc delete my-container --force

在 LXD 容器中运行 Docker
这种组合方式兼具 LXD 的强隔离性和 Docker 的应用便捷性,非常适合构建复杂的开发环境。官方推荐在 LXD 容器中运行 Docker 时,使用 Btrfs 文件系统以获得最佳性能。
创建 Btrfs 存储池和容器

配置容器以支持 Docker
需要开启嵌套容器等安全特性:

在 LXD 容器内安装 Docker
进入 LXD 容器,然后按照 Docker 官方指南进行安装:
