在 Debian 上安装 Docker Engine 和 Docker Compose
本教程指导你在 Debian 12(Bookworm)上安装 Docker Engine 和 Docker Compose,遵循官方文档的推荐方法(https://docs.docker.com/engine/install/debian/)。
前提条件
防火墙限制
- 如果使用
ufw
或firewalld
,请注意 Docker 暴露的容器端口会绕过防火墙规则。详情请参阅 Docker 和 ufw。 - Docker 仅兼容
iptables-nft
和iptables-legacy
。使用nft
创建的防火墙规则不受支持。确保防火墙规则使用iptables
或ip6tables
,并添加到DOCKER-USER
链。参见 包过滤和防火墙。
系统要求
- 需要 64 位版本的 Debian 12(Bookworm)。
- 支持的架构:
x86_64
(或amd64
)、armhf
、arm64
、ppc64le
。
卸载旧版本
在安装 Docker Engine 之前,卸载可能冲突的包:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt remove -y $pkg; done
- 注意:
/var/lib/docker/
中的镜像、容器、卷和网络不会自动删除。如需全新安装,可参考卸载 Docker Engine 部分清理数据。
安装方法
方法 1:使用 APT 仓库安装
设置 Docker 的 APT 仓库
# 更新包索引并安装依赖 sudo apt update sudo apt install -y ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings # 建议多输几次下面这行,可能被墙不稳定 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # 添加 Docker 仓库 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ bookworm stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update
安装 Docker 包 安装最新版本:
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
如果需要安装特定版本:
# 列出可用版本 apt-cache madison docker-ce | awk '{ print $3 }' # 安装指定版本(例如 5:28.3.2-1~debian.12~bookworm) VERSION_STRING=5:28.3.2-1~debian.12~bookworm sudo apt install -y docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
验证安装
sudo systemctl start docker sudo systemctl enable docker # 这步可能被墙无法拉取镜像 sudo docker run hello-world
如果看到
hello-world
容器的确认信息,说明安装成功。
方法 2:使用便捷脚本安装
Docker 提供了一个便捷脚本(https://get.docker.com/)用于非交互式安装,适合开发环境,但不推荐用于生产环境。注意以下限制:
- 需要
root
或sudo
权限。 - 脚本会自动检测发行版并配置包管理器。
- 不支持自定义安装参数。
- 默认安装最新稳定版本,可能导致意外的版本升级。
- 不适合升级现有 Docker 安装。
运行以下命令安装:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
预览脚本步骤(可选):
sudo sh get-docker.sh --dry-run
验证安装:
sudo systemctl start docker sudo docker run hello-world
安装预发布版本
若需安装测试版或预发布版,使用以下脚本:
curl -fsSL https://test.docker.com -o test-docker.sh
sudo sh test-docker.sh
(可选)设置非 root 用户运行 Docker
默认情况下,需使用 sudo
运行 Docker 命令。为允许非 root 用户运行:
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
注销并重新登录或运行 newgrp docker
使更改生效。验证:
docker run hello-world
安装 Docker Compose
Docker Compose 作为插件已包含在 docker-compose-plugin
中,无需单独安装。验证版本:
docker compose version
配置 Docker 开机自启
确保 Docker 和 containerd 在系统启动时自动运行:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
升级 Docker Engine
使用 APT 仓库升级
:重复“方法 1:安装 Docker 包”步骤,选择新版本:
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
使用便捷脚本升级:不建议重新运行脚本,建议使用 APT 仓库升级以避免重复配置仓库导致的问题。
卸载 Docker Engine
卸载 Docker 包:
sudo apt purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
删除所有镜像、容器和卷(可选):
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
删除源列表和密钥:
sudo rm /etc/apt/sources.list.d/docker.list sudo rm /etc/apt/keyrings/docker.asc
注意事项
- 生产环境中优先使用 APT 仓库安装,便捷脚本适合开发或测试环境。
- 如果使用衍生发行版(如 Kali Linux),需将
bookworm
替换为对应的 Debian 版本代号。 - 更多配置详情,参考 Docker 官方文档 和 Linux 安装后步骤。