Skip to content

Docker镜像源与代理服务器配置指南

镜像加速配置

国内主流镜像源推荐

sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://docker.mirrors.ustc.edu.cn",    // 中国科学技术大学
        "https://hub-mirror.c.163.com",          // 网易云
        "https://mirror.baidubce.com",           // 百度云
        "https://registry.docker-cn.com",        // Docker中国
        "https://ccr.ccs.tencentyun.com",        // 腾讯云
        "https://<your-aliyun-id>.mirror.aliyuncs.com"  // 阿里云(需替换ID)
    ]
}

⚠️ 注意事项

  1. 推荐同时配置3-4个镜像源确保可用性
  2. 阿里云镜像需登录控制台获取专属加速地址
  3. 优先级从上至下,建议将响应速度快的镜像源置顶

代理服务器配置

针对docker pull的代理设置

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=http://代理IP:端口"
Environment="HTTPS_PROXY=http://代理IP:端口"
Environment="NO_PROXY=localhost,127.0.0.1,.corp.example.com"  # 代理排除名单

全局代理配置(影响build/run操作)

vim ~/.docker/config.json
{
    "proxies": {
        "default": {
            "httpProxy": "http://172.17.0.1:8123",
            "httpsProxy": "http://172.17.0.1:8123",
            "noProxy": "*.test.example.com,10.96.0.0/12"
        }
    }
}

应用

#重启daemon进程
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker

🔍 网络模式说明

  • bridge模式:使用172.17.0.1访问宿主机
  • host模式:可直接使用127.0.0.1
  • 支持Socks5代理需通过polipo转换(教程链接

容器运行时代理方案

方案一:环境变量注入

docker run -e http_proxy='http://172.17.0.1:8123' \
           -e https_proxy='http://172.17.0.1:8123' \
           -e no_proxy='localhost,internal.domain' \
           your_image

方案二:端口映射

docker run -p 1080:1080 your_image
# 容器内设置:export ALL_PROXY='socks5://127.0.0.1:1080'

方案三:共享宿主机网络

docker run --network=host your_image
# 容器内直接使用宿主代理:export ALL_PROXY='socks5://127.0.0.1:1080'

配置生效与验证

服务重启命令

sudo systemctl daemon-reload
sudo systemctl restart docker

验证配置状态

# 查看镜像源配置
docker info | grep -A 10 "Registry Mirrors"

# 检查代理环境变量
sudo systemctl show --property=Environment docker

# 测试代理生效(返回代理服务器IP)
docker run --rm alpine wget -qO- http://ipinfo.io/ip

常见问题排查

镜像拉取缓慢

  • 执行curl https://docker.mirrors.ustc.edu.cn测试镜像可达性
  • 尝试临时禁用代理:mv ~/.docker/config.json ~/.docker/config.json.bak

容器无法访问网络

  • 检查NO_PROXY设置是否包含必要域名
  • 验证代理服务状态:nc -zv 代理IP 端口
  • 测试不同网络模式:--network=bridge/host/none

Build过程无法获取依赖

  • 添加构建参数:docker build --build-arg http_proxy=...
  • 检查防火墙设置:sudo ufw status

💡 最佳实践建议

  1. 生产环境推荐镜像源+代理双保险方案
  2. 开发环境建议使用host网络模式简化配置
  3. 定期执行docker system prune清理缓存

Ref