1. 背景
在中国大陆网络环境下,直接使用 Docker 官方源安装和拉取镜像会遇到:
- GPG 密钥下载失败(连接被重置)
- 仓库添加后签名验证失败
- 拉取镜像失败(connection refused / timeout)
2. 完整安装步骤(2025 年 12 月最新可用方案)
bash
# 安装依赖
sudo apt update
sudo apt install ca-certificates curl gnupg
# 创建 keyrings 目录
sudo install -m 0755 -d /etc/apt/keyrings
# 使用阿里云镜像下载并转换 GPG 密钥(推荐,稳定)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 添加阿里云 Docker 仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新包索引并安装 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3. 常见问题及解决
问题1:权限问题(permission denied ... docker.sock)
原因:普通用户无权访问 Docker daemon。
解决:
bash
sudo usermod -aG docker $USER
执行后必须注销重登录 (或重启电脑)才能生效。
生效后即可直接使用 docker 命令,无需加 sudo。
问题2:拉取镜像失败(hello-world 无法下载)
原因:官方 registry-1.docker.io 被干扰,旧加速器失效。
解决:配置最新有效的镜像加速器(2025 年 12 月亲测可用)
bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://hub.rat.dev",
"https://dockerproxy.net",
"https://docker.xuanyuan.me",
"https://proxy.vvvv.ee",
"https://docker.m.daocloud.io"
]
}
EOF
# 重启 Docker 使配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
验证配置:
bash
docker info | grep -A 10 "Registry Mirrors"
4. 最终验证安装成功
bash
docker run hello-world
成功输出包含以下内容即表示完全正常:
Hello from Docker!
This message shows that your installation appears to be working correctly.
运行后查看:
bash
docker images # 能看到 hello-world
docker ps -a # 能看到一个 Exited 的 hello-world 容器(正常,运行完就退出)
5. 额外建议
docker ps只显示正在运行的容器,hello-world 运行完会自动退出,所以默认看不到是正常的。- 用
docker ps -a查看所有容器(包括已停止的)。 - 加速器偶尔会变化,如某个失效,Docker 会自动尝试下一个。多配置几个最保险。
至此,Docker 在国内 Ubuntu 环境下的安装和常见问题全部解决!🎉