当前位置: 代码网 > it编程>开发工具>Docker > 从Docker拉取镜像一直失败超时?这些解决方案帮你解决烦恼

从Docker拉取镜像一直失败超时?这些解决方案帮你解决烦恼

2024年07月28日 Docker 我要评论
Docker镜像一直 Pull 不下来? 一直连接超时? 无法直接Docker Hub? 我大概总结了以下几种解决方案,来帮我们快速应对拉取镜像受阻,配置有效镜像地址实现加速 Pull

设置国内源:

提示:常规方案(作用不大)

阿里云提供了镜像源:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 登录后你会获得一个专属的地址
使用命令设置国内镜像源:通过vim /etc/docker/daemon.json 进入修改添加 registry-mirrors 内容后重启 docker

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'eof'
{
  "registry-mirrors": ["https://***替换为你的地址***.mirror.aliyuncs.com"]
}
eof
sudo systemctl daemon-reload
sudo systemctl restart docker

此命令会创建一个 /etc/docker/daemon.json 文件,并将国内源的配置写入其中。然后你只需要重启 docker 服务即可使配置生效,可以通过运行 sudo systemctl restart docker 命令来重启 docker 服务。

解决目前无法访问,超时连接方法

解决方案1:配置加速地址

配置加速地址:适用于ubuntu 16.04+、debian 8+、centos 7+

方式一:使用以下命令设置registry mirror:但是需要重启docker服务

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'eof'
{
    "registry-mirrors": [
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}
eof
sudo systemctl daemon-reload
sudo systemctl restart docker

方式二:如果您当前有正在运行的容器不方便重启docker服务,则不用设置环境也可以直接使用,用法示例:

docker pull do.nark.eu.org/library/mysql:5.7

第三方镜像:

atomhub 可信镜像中心 - 大部分需要的镜像都是有的。
可信镜像中心官网:https://atomhub.openatom.cn/
通过搜索需要的镜像名称,进行pull拉取,用法示例:

docker pull atomhub.openatom.cn/amd64/redis:7.0.13

加速代理站点:

专门为github用户提供下载加速服务的代理站点。由于github的下载速度在某些地区可能会受到限制,导致开发者在获取代码库、项目文件等资源时遇到困难。该代理站点通过优化的网络节点和高速服务器,为用户提供快速、稳定的github资源下载服务。
站点地址:https://docker.888666222.xyz/

第一步:为了加速镜像拉取,你可以使用以下命令设置 registry mirror:

sudo tee /etc/docker/daemon.json <<eof
{
    "registry-mirrors": ["https://docker.888666222.xyz"]
}
eof
第二步:为了避免 worker 用量耗尽,你可以手动 pull 镜像然后 re-tag 之后 push 至本地镜像仓库:

docker pull docker.888666222.xyz/library/alpine:latest # 拉取 library 镜像
docker pull docker.888666222.xyz/coredns/coredns:latest # 拉取 coredns 镜像

解决方案2:使用代理拉取镜像

第一步:创建配置文件
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

第二步:在文件中添加代理
[service]
environment="http_proxy=socks5://user:pass@127.0.0.1:1080"
environment="https_proxy=socks5://user:pass@127.0.0.1:1080"

第三步:重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker

第四步:查看环境变量
sudo systemctl show --property=environment docker

解决方案3:备用办法:直接传送镜像

国外服务器拉取镜像后打包压缩到本地,然后传输到国内服务器,myimage为镜像名

第一步:a服务器保存docker镜像
docker save myimage > myimage.tar

第二步:传送到b服务器
scp myimage.tar root@192.0.2.0:/home
然后输入b服务器root密码

第三步:b服务器加载docker镜像
cd /home
docker load < myimage.tar

第四步:查看镜像
docker images

目前可用的镜像代理:

拉取 pull 镜像时,遇到不可用、关停、访问比较慢的状态,建议同时配置多个镜像源。

提供商地址
daocloudhttps://docker.m.daocloud.io
阿里云https://<your_code>.mirror.aliyuncs.com
docker镜像代理https://dockerproxy.com
百度云https://mirror.baidubce.com
南京大学https://docker.nju.edu.cn
中科院https://mirror.iscas.ac.cn

小福利:
近期 rainbond 社区为了方便拉取 docker 镜像,自主搭建了个镜像加速服务,采用 cloudflare + 国外服务器 nginx 反代的方案为 rainbond 社区的用户们提供镜像加速服务。

方式一:直接获取 docker hub 镜像
docker pull docker.rainbond.cc/library/node:20
docker pull docker.rainbond.cc/rainbond/rainbond:v5.17.2-release-allinone

方式二:配置镜像加速器
tee /etc/docker/daemon.json <<-'eof'
{
  "registry-mirrors": ["https://docker.rainbond.cc"]
}
eof
systemctl daemon-reload
systemctl restart docker

技术栈参考link
https://www.rainbond.com/docs/quick-start/quick-install

解决办法千万条:

面对问题时,解决的途径和方法是多种多样的。每个人、每个团队在面对问题时,都可以根据自身的情况和资源,创造性地找到最适合自己的解决办法。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com