在 Debian 12 上安装 Docker:完整指南
Docker 是一个开源平台,它允许开发者自动化应用程序的部署、扩展和管理。通过容器化技术,Docker 将应用程序及其所有依赖项打包到一个标准化的单元中,确保应用程序在任何环境中都能以相同的方式运行。本指南将详细介绍如何在 Debian 12 (Bookworm) 上安装 Docker Engine。
什么是 Docker?
Docker 利用操作系统级虚拟化技术(容器),将软件封装在一个完整的运行时环境中。这意味着一个 Docker 容器包含应用程序运行所需的所有代码、运行时、系统工具、系统库和设置。这种隔离性使得应用程序的部署变得更加一致、高效和可靠。
为什么要在 Debian 12 上使用 Docker?
- 环境一致性: 避免“在我的机器上能运行”的问题,确保开发、测试和生产环境的一致性。
- 快速部署: 容器启动速度快,可以实现秒级部署。
- 资源隔离: 容器之间相互隔离,不影响宿主机或其他容器的运行。
- 可移植性: 容器可以在任何支持 Docker 的系统上运行,无论是本地机器、虚拟机还是云平台。
- 微服务架构支持: Docker 是实现微服务架构的理想选择。
先决条件
在开始安装 Docker 之前,请确保您的 Debian 12 系统满足以下条件:
- 一台运行 Debian 12 (Bookworm) 的服务器或虚拟机。
- 具有
sudo权限的非 root 用户。 - 互联网连接。
-
系统已更新到最新状态:
bash
sudo apt update
sudo apt upgrade -y
方法一:使用便利脚本安装 Docker(不推荐用于生产环境)
Docker 提供了一个便利脚本,可以快速安装 Docker。这种方法适用于开发或测试环境,但不建议用于生产环境,因为它可能不会安装最新版本或允许您完全控制安装过程。
-
下载并运行脚本:
bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh这个脚本会自动配置 Docker 仓库,并安装 Docker Engine、CLI 和 Containerd。
-
将当前用户添加到
docker用户组(推荐):
默认情况下,只有 root 用户或docker用户组的成员才能运行 Docker 命令。为了避免每次都使用sudo,您可以将当前用户添加到docker用户组。bash
sudo usermod -aG docker $USER更改将在您下次登录时生效。请 注销并重新登录 您的会话,或者重新启动您的终端。
-
验证安装:
bash
docker run hello-world如果一切正常,您应该会看到一条消息,表明 Docker 安装成功。
方法二:使用官方 Docker 仓库安装 Docker(推荐用于生产环境)
这是在生产环境中安装 Docker 的推荐方法,它允许您从官方仓库安装最新版本的 Docker,并能更好地控制版本升级。
1. 卸载旧版本(如果存在)
如果您之前安装过旧版本的 Docker,请先卸载它们:
bash
sudo apt remove docker docker-engine docker.io containerd runc
这不会删除 /var/lib/docker/ 中的数据,包括镜像、容器、卷和网络。如果您想完全删除所有 Docker 数据,请在卸载后手动删除该目录:
bash
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
2. 更新 apt 包索引并安装必要的包
bash
sudo apt update
sudo apt install ca-certificates curl gnupg -y
ca-certificates: 允许基于 SSL/TLS 的应用程序检查 SSL 证书的真实性。curl: 用于传输数据到或从服务器。gnupg: 用于管理加密密钥。
3. 添加 Docker 的官方 GPG 密钥
为了确保下载的 Docker 包是正版且未被篡改,需要添加 Docker 的官方 GPG 密钥:
bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
4. 设置 Docker 仓库
将 Docker 仓库添加到您的 apt 源列表中:
bash
echo \
"deb [arch=\"$(dpkg --print-architecture)\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
此命令会根据您的系统架构和 Debian 版本 (Bookworm) 添加正确的 Docker 仓库。
5. 安装 Docker Engine
现在,更新 apt 包索引以包含新的 Docker 仓库,然后安装 Docker Engine:
bash
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
docker-ce: Docker Engine 的社区版。docker-ce-cli: Docker 命令行客户端。containerd.io: 容器运行时,Docker Engine 使用它来管理容器的生命周期。docker-buildx-plugin: Docker Buildx 插件,用于构建多平台镜像。docker-compose-plugin: Docker Compose 插件,用于定义和运行多容器 Docker 应用程序。
6. 验证 Docker 安装
检查 Docker Daemon 是否正在运行:
bash
sudo systemctl status docker
您应该会看到类似 Active: active (running) 的输出。
通过运行 hello-world 镜像来验证 Docker 是否正确安装:
bash
sudo docker run hello-world
如果安装成功,您将看到一条消息,指示 Docker 已正确安装并运行。
7. 以非 Root 用户管理 Docker(推荐)
默认情况下,docker 命令需要 sudo 权限才能运行。如果您希望以非 root 用户身份运行 Docker 命令,而无需每次都输入 sudo,可以将您的用户添加到 docker 用户组:
bash
sudo usermod -aG docker $USER
为了使更改生效,您需要 注销并重新登录,或者重启您的终端。
重新登录后,您可以尝试不带 sudo 运行 Docker 命令:
bash
docker run hello-world
配置 Docker 开机自启动
Docker 服务默认应该配置为在系统启动时自动启动。您可以通过以下命令确认或启用它:
bash
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
卸载 Docker(可选)
如果您需要从 Debian 12 系统中完全删除 Docker,请按照以下步骤操作:
-
卸载 Docker 包:
bash
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y -
删除所有 Docker 相关的镜像、容器、卷和网络:
bash
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd -
删除 Docker 仓库配置和 GPG 密钥:
bash
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.gpg
结论
恭喜您!现在您已经在 Debian 12 系统上成功安装了 Docker Engine。您可以开始拉取镜像、运行容器、构建自己的 Dockerfile,并利用 Docker 的强大功能来简化您的应用程序开发和部署工作流程。
接下来您可以尝试:
- 拉取一个 Nginx 镜像并运行:
bash
docker run -d -p 80:80 --name my-nginx nginx
然后您可以通过浏览器访问服务器的 IP 地址来查看 Nginx 默认页面。 - 学习 Docker Compose: 探索如何使用 Docker Compose 来管理多容器应用程序。
- 阅读 Docker 官方文档: 获取更多高级用法和最佳实践。