侧边栏壁纸
博主头像
liveJQ博主等级

沒有乐趣,何来开始

  • 累计撰写 148 篇文章
  • 累计创建 61 个标签
  • 累计收到 2 条评论

解决无法下载 Docker 镜像的问题

liveJQ
2024-06-15 / 0 评论 / 0 点赞 / 286 阅读 / 1,705 字 / 正在检测是否收录...
广告 广告

“众所周知”,最近 Docker 镜像拉取有点问题,镜像加速很多都“离奇失踪”了,故在此记录下自己比较常用的解决方法吧。

配置镜像加速

直接使用 Docker 守护程序默认的配置文件配置镜像加速地址,然后就可以正常使用与官方一样的命令,相当于一种无感知的代理服务。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://dockerproxy.com",
        "https://huecker.io",
        "https://dockerhub.timeweb.cloud"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

在不久之前,这样配置好就完事了。但目前添加的加速地址,只适用于非中国大陆的网络。如果您的服务器满足以上要求但仍然无法正常使用(已确定加速地址百分百可用),请确保您使用的是非中国大陆提供的DNS解析服务。

配置代理

既然是网络问题,那就直接配置好代理服务,将本机对 Docker 的请求都转发给代理服务,只要代理服务那边能访问就可以了。

这边使用的 SOCKS5,如果你在本地局域网的环境,你也可以直接在本地正常访问的系统里面起一个服务端。

通过配置环境变量

如果你通过命令直接拉取或运行容器,可以直接加上:

-e http_proxy=socks5://192.168.1.11:1080 -e https_proxy=socks5://192.168.1.11:1080

通过 daemon.json 文件

当 Docker Engine 为 23.0 及更高版本,可以直接使用/etc/docker/daemon.json配置代理。

{
    "registry-mirrors": [
        "https://dockerproxy.com",
        "https://huecker.io",
        "https://dockerhub.timeweb.cloud"
    ],
    "proxies": {
        "http-proxy": "socks5://192.168.1.11:1080",
        "https-proxy": "socks5://192.168.1.11:1080",
        "no-proxy": "127.0.0.1,localhost,*.example.com"
    }
}

配置完同样重启服务生效

sudo systemctl daemon-reload
sudo systemctl restart docker

通过 systemd 配置文件

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo cat <<EOF>/etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=socks5://192.168.1.11:1080"
Environment="HTTPS_PROXY=socks5://192.168.1.11:1080"
Environment="NO_PROXY=127.0.0.1,localhost,*.example.com"
EOF

配置完同样重启服务生效

sudo systemctl daemon-reload
sudo systemctl restart docker

验证环境变量

sudo systemctl show --property=Environment docker

参考资料

  1. Docker daemon configuration overview
  2. 自建Docker 镜像/源加速的方法
0

评论区