Docker 在 Ubuntu(国内网络)安装及问题解决总结

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 环境下的安装和常见问题全部解决!🎉

相关推荐
艾莉丝努力练剑9 分钟前
【AI大模型接入SDK】ChatServer HTTP接口模块实现总览
网络·c++·人工智能·网络协议·学习·http·架构
YH_Analytics29 分钟前
2026 洁净室环境在线监测系统行业排名与份额对比销量与份额解析
大数据·网络·人工智能
Chenyu_31038 分钟前
NUMA 基础:从 CPU、内存到 Node 的整体理解
linux·服务器·网络·缓存
对空六课2 小时前
两个统计平台数据不同:用同一时间窗和事件样本做差异定位
大数据·前端·网络·数据库
User_芊芊君子2 小时前
【JavaEE初阶 - 网络原理】网络分几层?从自定义协议聊到 DNS
java·网络·java-ee
2603_969579289 小时前
备份最常用的三个软件是什么软件
网络
JavaPub-rodert9 小时前
Docker 日志为什么能把磁盘写爆?讲透 json-file、local、journald、日志轮转与 docker logs
docker·eureka·json
缓慢更新10 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
人生匆匆10 小时前
docker部署ceph集群
ceph·docker·容器
Data_Journal11 小时前
如何绕过 Cloudflare:网页抓取的最佳方法
网络·python