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

相关推荐
软件小滔几秒前
我使用MAC WiFi Explorer Pro完成了一次家庭网络“大扫除”
网络·macos·智能路由器·mac·应用推荐·wifi explorer
Q_21932764551 分钟前
基于STM32的智能家居安防系统设计
网络·stm32·智能家居
LuckyLay9 分钟前
Ubuntu配置多版本Java,自由切换
java·linux·ubuntu
活蹦乱跳酸菜鱼11 分钟前
MAC 发出的一个帧(MAC Frame)及其完整的帧格式
网络·macos
rustfs12 分钟前
使用 RustFS和 Arq,打造 PC 数据安全备份之道
分布式·docker·云原生·rust·开源
云安全干货局14 分钟前
游戏服务器遭DDoS瘫痪?高防IP部署全流程+效果复盘
网络·人工智能·高防ip
一颗青果16 分钟前
TCP全连接队列与抓包
网络·tcp/ip·github
上海云盾-高防顾问20 分钟前
CC攻击的分类与演进:从代理攻击到僵尸网络的技术剖析
网络·安全
首席拯救HMI官38 分钟前
【拯救HMI】HMI容错设计:如何减少操作失误并快速纠错?
大数据·运维·前端·javascript·网络·学习
HIT_Weston44 分钟前
99、【Ubuntu】【Hugo】搭建私人博客:搜索功能(三)
linux·运维·ubuntu