在 Ubuntu 26.04 上成功安装 Docker CE 后,你可能会遇到拉取镜像失败的问题,报错类似 connection reset by peeri/o timeout。这是因为 Docker 默认从海外官方仓库(Docker Hub)拉取镜像,国内访问速度慢且不稳定。

本教程将指导你通过阿里云公共镜像加速器一键配置 Docker,无需创建任何实例,即开即用,大幅提升镜像拉取速度。

适用环境:Ubuntu 26.04 LTS (Resolute Raccoon) / Docker CE 已安装
加速器类型:阿里云公共镜像加速器(无需 ACR 实例)


🚀 一键配置脚本(整体执行)

如果你追求效率,可以直接以 root 权限执行以下脚本。它会自动创建配置目录、写入加速器配置、重启 Docker 服务并验证。

#!/bin/bash
# =============================================
# Ubuntu 26.04 Docker 镜像加速器(阿里云公共版)一键配置脚本
# 功能:配置阿里云公共镜像加速器,解决 Docker Hub 拉取慢/超时问题
# 说明:使用公共加速地址 https://mirrors.aliyun.com,无需创建 ACR 实例
# =============================================

set -e  # 遇到错误立即退出

echo "🚀 开始配置 Docker 阿里云公共镜像加速器..."

# 1. 创建 Docker 配置目录(如果不存在)
echo "📁 创建 Docker 配置目录..."
sudo mkdir -p /etc/docker

# 2. 写入阿里云公共镜像加速器配置
# 使用公共地址,无需登录阿里云账号即可使用
echo "📝 写入阿里云公共镜像加速器配置..."
sudo tee /etc/docker/daemon.json <<'EOF'
{
  "registry-mirrors": ["https://mirrors.aliyun.com"]
}
EOF

# 3. 重启 Docker 服务使配置生效
echo "🔄 重启 Docker 服务..."
sudo systemctl daemon-reload
sudo systemctl restart docker

# 4. 验证配置是否生效
echo "✅ 验证配置..."
docker info | grep -A 1 "Registry Mirrors" || echo "⚠️ 未找到 Registry Mirrors,请手动验证"

# 5. 测试拉取镜像
echo "🧪 测试拉取 hello-world 镜像..."
docker run hello-world

echo ""
echo "=========================================="
echo "🎉 Docker 阿里云公共镜像加速器配置完成!"
echo "=========================================="
echo "📌 当前加速器地址:"
docker info | grep -A 1 "Registry Mirrors"
echo ""
echo "📌 测试命令:"
echo "  docker run -it ubuntu bash"
echo "  docker pull nginx"
echo "=========================================="

📖 分步详解

第一步:理解阿里云公共镜像加速器

什么是公共镜像加速器?

阿里云为所有用户提供公共镜像加速器服务,无需手动创建 ACR(容器镜像服务)实例即可直接使用。它的作用是加速拉取 Docker Hub、Google 等公共镜像。

公共加速器 vs ACR 实例的区别

对比项公共镜像加速器ACR 个人版/企业版实例
是否需要创建实例❌ 不需要✅ 需要
是否需要阿里云账号❌ 不需要✅ 需要
适用场景仅加速公共镜像拉取托管私有镜像、镜像构建自动化、企业级权限管理
地址格式https://mirrors.aliyun.comhttps://<你的ID>.mirror.aliyuncs.com

💡 说明:若仅需基础加速,使用公共地址即可。若需推送私有镜像、绑定代码仓库自动构建等高级功能,才需要创建 ACR 实例,两者互不冲突。


第二步:Docker 配置文件说明

Docker 的配置文件是 /etc/docker/daemon.json。这是 Docker 守护进程的主配置文件,用于自定义各种运行参数。

文件格式要求

  • JSON 格式,必须严格遵循语法(使用双引号,不能有尾随逗号)
  • 禁止添加注释(JSON 不支持 // 注释,否则会导致语法错误)
  • 如果文件不存在,需要手动创建
  • 修改后需要重启 Docker 服务才能生效

第三步:创建 Docker 配置目录

如果 /etc/docker 目录不存在(新安装 Docker 时可能没有),需要先创建:

sudo mkdir -p /etc/docker

-p 参数表示递归创建,如果父目录不存在也会一并创建。


第四步:写入镜像加速器配置

使用 tee 命令将配置写入 daemon.json 文件:

sudo tee /etc/docker/daemon.json <<'EOF'
{
  "registry-mirrors": ["https://mirrors.aliyun.com"]
}
EOF

命令详解

  • sudo tee:以 root 权限写入文件,同时输出内容到终端(方便确认)
  • <<'EOF':使用 Here Document 语法,将后续内容作为标准输入
  • 'EOF' 带引号表示内容原样输出,不会进行变量替换

如果已有配置文件(追加多个加速器):

sudo tee /etc/docker/daemon.json <<'EOF'
{
  "registry-mirrors": [
    "https://mirrors.aliyun.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ]
}
EOF

💡 小贴士:可以配置多个加速器,Docker 会按顺序尝试。


第五步:重启 Docker 服务

修改配置后,需要让 Docker 守护进程重新加载配置:

# 1. 重新加载 systemd 配置
sudo systemctl daemon-reload

# 2. 重启 Docker 服务
sudo systemctl restart docker

查看 Docker 服务状态

sudo systemctl status docker

应显示 active (running)


第六步:验证配置是否生效

方法1:通过 docker info 查看

docker info | grep -A 1 "Registry Mirrors"

预期输出

Registry Mirrors:
 https://mirrors.aliyun.com

方法2:查看配置文件内容

cat /etc/docker/daemon.json

方法3:通过 Docker 日志验证

sudo journalctl -u docker -n 20 | grep -i mirror

第七步:测试镜像拉取速度

配置生效后,拉取镜像的速度应该明显提升:

# 测试拉取 Ubuntu 镜像
docker pull ubuntu:latest

# 测试拉取 Nginx 镜像
docker pull nginx:latest

# 运行测试容器
docker run -it ubuntu bash

速度对比参考(未配置 vs 已配置):

  • 未配置镜像源:拉取 nginx:latest 约需 7 分 22 秒
  • 配置后:拉取 nginx:latest 约需 18 秒
  • 速度提升超 10 倍

❓ 常见问题与解决方案

1. 配置后仍然报错 connection reset by peer

原因:除了镜像加速,可能还有其他网络限制(如防火墙、代理)。

解决

# 1. 检查 Docker 代理配置
echo $http_proxy $https_proxy

# 2. 如果配置了代理,确保 Docker 使用代理
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<'EOF'
[Service]
Environment="HTTP_PROXY=http://代理IP:端口"
Environment="HTTPS_PROXY=http://代理IP:端口"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2. docker info 报错 permission denied

原因:当前用户不在 docker 组。

解决

# 加入 docker 组
sudo usermod -aG docker $USER

# 重新登录或执行
newgrp docker

3. 配置后拉取镜像仍然很慢

原因:可能使用的是阿里云 ECS 但用了公网地址。

解决:如果是阿里云 ECS,改为内网地址:

sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/docker/daemon.json
sudo systemctl restart docker

4. daemon.json 格式错误导致 Docker 启动失败

原因:JSON 格式不正确(如使用了单引号、尾随逗号、添加了注释)。

解决

# 1. 检查 JSON 格式
cat /etc/docker/daemon.json

# 2. 如果格式错误,修复或删除文件
sudo rm /etc/docker/daemon.json

# 3. 重新创建正确的配置
sudo tee /etc/docker/daemon.json <<'EOF'
{
  "registry-mirrors": ["https://mirrors.aliyun.com"]
}
EOF

# 4. 重启 Docker
sudo systemctl restart docker

5. Docker 重启后配置失效

原因:JSON 语法错误(如逗号遗漏、引号未闭合)。

解决:使用在线 JSON 校验工具验证语法,修复后重新配置。

6. 拉取镜像时出现 403 Forbidden

原因:① 网络代理限制;② 加速地址拼写错误。

解决:检查代理设置,重新复制粘贴加速地址。

7. 如何查看当前使用的镜像源?

# 查看 Docker 配置
docker info | grep -E "Registry|Mirror"

# 或者查看 daemon.json
cat /etc/docker/daemon.json

📊 配置校验清单

检查项命令预期结果
配置文件存在ls -la /etc/docker/daemon.json文件存在,权限正常
配置内容正确cat /etc/docker/daemon.json包含 registry-mirrorsmirrors.aliyun.com
加速器生效docker info | grep -A 1 "Registry Mirrors"显示 https://mirrors.aliyun.com
服务运行正常sudo systemctl status dockeractive (running)
镜像拉取docker pull hello-world成功拉取,速度明显提升

💡 总结

通过本文,你应该已经掌握了:

  1. 公共镜像加速器:无需创建 ACR 实例,使用公共地址即可加速 Docker Hub 镜像拉取。
  2. 配置方法:使用 /etc/docker/daemon.json 文件配置 registry-mirrors
  3. 验证方式:通过 docker info 和实际拉取测试验证生效。
  4. 问题排查:常见报错及解决方案。

下一步:配置好镜像加速器后,可以开始使用 Docker 部署各种容器化应用,如 Nginx、MySQL、Redis 等。若需托管私有镜像或企业级功能,再按需创建 ACR 个人版或企业版实例即可。


如果在配置过程中遇到任何问题,欢迎在评论区留言! 😊

更多推荐