Appearance
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/Fedora2. 配置官方 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.repo3. 安装 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-plugin4. 启动并启用服务
bash
sudo systemctl start docker
sudo systemctl enable docker5. 验证安装
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为阿里云镜像:texthttps://mirrors.aliyun.com/docker-ce/并同步更新
/etc/apt/sources.list.d/docker.list或.repo文件中的 baseurl。Rootless 模式(推荐用于开发/非特权场景): Docker 支持无需 root 权限的运行模式,提升安全性。启用方式:
bashdockerd-rootless-setuptool.sh install详细配置请参考 Docker 官方 Rootless 文档。
cgroups v2 支持:Docker 20.10+ 默认要求 cgroups v2。确认方式:
bashcat /proc/1/cgroup | head -n1 # 输出含 `0::/` 表示已启用若未启用且系统支持,可在内核启动参数中添加
systemd.unified_cgroup_hierarchy=1。SELinux(RHEL/CentOS/Fedora):默认兼容,但若遇到权限拒绝(
Permission denied),检查 SELinux 状态:bashsestatus # 如为 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 不兼容。
