官方推荐流程≠最快最稳流程;需用curl脚本安装并配置镜像源、重启服务、加用户至docker组,否则普通用户无法运行、拉镜像超时。

直接上结论:官方推荐流程 ≠ 最快最稳流程,尤其在国内网络环境下。用 curl -fsSL https://get.docker.com | sh 脚本安装最接近官方意图,但必须配合镜像源和用户组配置,否则装完不能普通用户运行、拉镜像超时失败是常态。
为什么不用包管理器直接 install docker.io?
Ubuntu/Debian 的 apt install docker.io 安装的是系统维护的旧版 Docker(比如 Ubuntu 22.04 自带 20.10),功能缺失(缺 docker buildx、docker compose plugin)、CLI 行为不一致、甚至不支持 containerd 作为默认运行时。CentOS/RHEL 系的 yum install docker 更是早已废弃,会装上过时的 docker 包而非 docker-ce。
- 查版本:
docker --version输出带build后缀(如26.1.3)才是当前稳定版;若只有20.10.12这类数字,基本是系统仓旧包 -
docker info | grep "containerd"应有输出,否则运行时不是 containerd,后续插件可能无法加载 - Ubuntu 用户务必避开
docker.io,优先走 Docker 官方 repo
curl 脚本安装后必须做的三件事
脚本执行完只是装上了二进制,离可用还差关键几步:
- 添加国内镜像源:编辑
/etc/docker/daemon.json(不存在则新建),写入:{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]}注意 JSON 格式严格,末尾不能多逗号,文件权限应为644 - 重启服务:
sudo systemctl restart docker,否则新配置不生效 - 加用户到
docker组:sudo usermod -aG docker $USER,然后完全退出终端重登录(仅newgrp docker不可靠,尤其在 SSH 会话中)
CentOS/RHEL 8+ 必须注意仓库变量替换
阿里云镜像源地址里含 $releasever,但 CentOS Stream 或 Rocky Linux 9+ 默认不展开该变量,导致 yum-config-manager 添加 repo 后实际请求 404:
- 先确认系统代号:
rpm -E %dist或cat /etc/os-release | grep VERSION_ID - 手动替换 repo 文件中的
$releasever,例如 CentOS 9 Stream 改成9-stream,Rocky 9 改成9 - 再运行:
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin—— 注意这五个包要一起装,缺docker-buildx-plugin会导致docker buildx命令不存在
验证是否真可用,别只信 docker -v
docker -v 成功只说明 CLI 在 PATH 里,不代表 daemon 能跑、镜像能拉、容器能启:
- 运行:
docker run --rm hello-world,看到 “Hello from Docker!” 才算基础通路完成 - 检查守护进程状态:
systemctl is-active docker应输出active,不是inactive或failed - 非 root 用户执行:
docker ps,无permission denied错误才算用户组生效 - 如果卡在
Pulling from library/hello-world,大概率是daemon.json镜像源没生效或格式错
最容易被忽略的是 daemon.json 的 JSON 语法和用户组重登录——前者一个多余逗号就让 dockerd 启动失败且日志不报错,后者导致反复 sudo 才能用,却以为是安装问题。











