在 Debian 12 上安装 Docker:完整指南 – wiki大全

在 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。这种方法适用于开发或测试环境,但不建议用于生产环境,因为它可能不会安装最新版本或允许您完全控制安装过程。

  1. 下载并运行脚本:

    bash
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh

    这个脚本会自动配置 Docker 仓库,并安装 Docker Engine、CLI 和 Containerd。

  2. 将当前用户添加到 docker 用户组(推荐):
    默认情况下,只有 root 用户或 docker 用户组的成员才能运行 Docker 命令。为了避免每次都使用 sudo,您可以将当前用户添加到 docker 用户组。

    bash
    sudo usermod -aG docker $USER

    更改将在您下次登录时生效。请 注销并重新登录 您的会话,或者重新启动您的终端。

  3. 验证安装:

    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,请按照以下步骤操作:

  1. 卸载 Docker 包:

    bash
    sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

  2. 删除所有 Docker 相关的镜像、容器、卷和网络:

    bash
    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd

  3. 删除 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 官方文档: 获取更多高级用法和最佳实践。
滚动至顶部