Skip to content

Docker安装指南 ​

本指南提供在主流 Linux 发行版上安全、可复现、符合官方最佳实践的 Docker Engine 安装方法。适用于生产环境初始化或开发机配置,不推荐使用 snap 或 curl | sh 等非受控方式。

⚠️ 注意:自 Docker 20.10 起,Docker Engine 已正式取代旧版 docker-ce 作为标准发行名称;docker.io(Ubuntu 官方仓库包)版本滞后且缺乏长期支持,不推荐用于生产环境。

前置条件 ​

  • 操作系统为以下之一:
    • Ubuntu 22.04 LTS / 24.04 LTS
    • Debian 11 (bullseye) / 12 (bookworm)
    • CentOS Stream 8 / 9、RHEL 8 / 9、AlmaLinux/Rocky Linux 8 / 9
    • Fedora 39 / 40
  • 内核版本 ≥ 3.10(建议 ≥ 5.4,以支持 cgroups v2 和现代容器特性)
  • 具备 sudo 权限的用户
  • 已启用 systemd(所有主流发行版默认满足)
  • 网络可访问 download.docker.com(国内用户建议配置镜像源,见「注意事项」)

安装步骤 ​

1. 卸载旧版本(如存在) ​

避免与遗留包(如 docker, docker.io, docker-engine, podman-docker)冲突:

bash
sudo apt-get remove -y docker docker-engine docker.io containerd runc  # Debian/Ubuntu
# 或
sudo dnf remove -y docker docker-client docker-client-latest docker-common \
  docker-latest docker-latest-logrotate docker-logrotate podman-docker  # RHEL/Fedora

2. 配置官方 Docker APT/YUM 仓库 ​

▸ Ubuntu/Debian ​

bash
# 安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 添加 Docker 官方 GPG 密钥(验证包签名)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加稳定版仓库(自动适配系统架构与发行版代号)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

▸ RHEL/CentOS Stream/Fedora ​

bash
# 启用 Extras 仓库(RHEL/CentOS Stream 8+ 必需)
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 或对 Fedora:
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo

3. 安装 Docker Engine ​

▸ Ubuntu/Debian ​

bash
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

▸ RHEL/CentOS Stream/Fedora ​

bash
# RHEL/CentOS Stream 8/9
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Fedora(需启用 `fedora-modular` 仓库)
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4. 启动并启用服务 ​

bash
sudo systemctl start docker
sudo systemctl enable docker

5. 验证安装 ​

bash
sudo docker run --rm hello-world

预期输出包含 Hello from Docker! 及运行环境说明,表示引擎、守护进程与 CLI 均正常工作。

权限管理:避免每次使用 sudo ​

将当前用户加入 docker 组以获得免 sudo 权限(需重新登录或刷新组成员关系):

bash
sudo usermod -aG docker $USER
newgrp docker  # 立即生效(当前 shell),或退出重登

🔒 安全提示:docker 组等价于 root 权限。仅将可信用户加入该组;生产环境应严格遵循最小权限原则,优先使用 rootless 模式(见「注意事项」)。

注意事项 ​

  • 国内加速:若下载缓慢,可替换仓库 URL 中的 download.docker.com 为阿里云镜像:

    text
    https://mirrors.aliyun.com/docker-ce/

    并同步更新 /etc/apt/sources.list.d/docker.list 或 .repo 文件中的 baseurl。

  • Rootless 模式(推荐用于开发/非特权场景): Docker 支持无需 root 权限的运行模式,提升安全性。启用方式:

    bash
    dockerd-rootless-setuptool.sh install

    详细配置请参考 Docker 官方 Rootless 文档。

  • cgroups v2 支持:Docker 20.10+ 默认要求 cgroups v2。确认方式:

    bash
    cat /proc/1/cgroup | head -n1
    # 输出含 `0::/` 表示已启用

    若未启用且系统支持,可在内核启动参数中添加 systemd.unified_cgroup_hierarchy=1。

  • SELinux(RHEL/CentOS/Fedora):默认兼容,但若遇到权限拒绝(Permission denied),检查 SELinux 状态:

    bash
    sestatus
    # 如为 enforcing,可临时设为 permissive 测试:
    sudo setenforce 0

常见问题 ​

Q:docker: command not found? ​

A:检查是否已执行 sudo apt-get update(Debian/Ubuntu)或 sudo dnf makecache(RHEL/Fedora);确认 docker-ce-cli 已安装。

Q:Cannot connect to the Docker daemon? ​

A:确认 dockerd 进程正在运行:sudo systemctl status docker;检查 /var/run/docker.sock 是否存在且权限正确(属主 root:docker)。

Q:Error response from daemon: failed to create endpoint...? ​

A:通常因网络插件冲突或 iptables 规则异常。尝试重启服务:sudo systemctl restart docker;必要时重置网络:sudo docker network prune。

Q:能否与 Podman 共存? ​

A:可以。Docker 和 Podman 使用不同守护进程与 socket 路径(/var/run/docker.sock vs /run/podman/podman.sock),互不影响。但注意 docker-compose 插件与 podman-compose 不兼容。

方舟 · Ark