最近因网络问题,导致docker突然不能正常拉取镜像,提示“errorresponse from daemon”,群晖提示“查询注册表失败”,威联通提示“获取版本失败”,或者哪怕能拉取速度也非常缓慢,只有几k每秒的速度,这里就彻底解决镜像拉取失败/缓慢问题。
以下方法请根据实际情况选择其中一种
更改dns
可以先尝试更改公共dns,目前部分地方运营商存在dns劫持,可以尝试把dns修改为114.114.114.114等公共dns,或者自行搭建dns服务器防止劫持,自建教程可以查看往期文章《搭建并配置一个属于自己的dns去广告服务器》。
注:修改dns后请重启或者刷新缓存再查看是否正常
更改hosts
此方法适用于公共dns也存在劫持,且不想自建dns服务器,这时候可以通过修改系统hosts文件指定域名解析ip。
以Ubuntu为例
su root
nano /etc/hosts
添加hosts
108.160.166.61 registry.hub.docker.com156.233.67.243 hub.docker.com
之后按住ctrl+o键保存重启系统生效。
更换国内镜像仓库
1.选择加速地址
修改成国内镜像地址就能享受到飞一般的速度,但有一个问题,部分站点镜像不全或者镜像比较老,建议使用多个镜像站。
https://<your_code>.mirror.aliyuncs.com #阿里云
https://hub-mirror.c.163.com #网易云
https://dockerproxy.com #代理站
https://mirror.baidubce.com #百度云
https://docker.nju.edu.cn #南京大学
这里我以阿里云(阿里云是官方镜像加速,实测是这些中最好的)为例。
如果没有阿里云账号先去https://www.aliyun.com/注册一个。
登录阿里云,选择容器镜像服务https://cr.console.aliyun.com/,点击镜像工具-镜像工具-镜像加速器,复制加速器地址。
注:每个账号加速地址并不相同
2.修改docker镜像地址
Ubuntu/Centos
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxx(自己的加速地址).mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
威联通nas
打开containerstation-属性-Registry服务器,点击新增
名称随意,自己能分辨出就行,我这里就叫做docker,网址输入刚刚复制的阿里云加速器地址,用户名密码均为空,点击测试,出现绿色小勾说明测试成功,点击应用,即可看到刚刚添加的Registry服务器。
假设我现在需要部署iyuuplus这个docker,先在创建中搜索到此docker镜像名称,在这里镜像名称就是iyuucn/iyuuplus。
复制名称,转到镜像文件,点击提取,选择刚刚的Registry服务器,填入镜像名称,填入版本(一般除非指定版本,否则都是latest),点击提取。
稍等片刻即可看到镜像已经提取完成。
注:此时映像名称变成了Registry服务器地址+原映像名称
之后点击旁边的加号即可正常部署docker。
群晖nas
打开docker-注册表,选择上方设置,选中docker hub点击编辑,勾选启用注册表镜像,填写阿里云加速器地址确定,重启docker即可正常使用。
使用代理
使用代理来加速映像下载,此部分不做介绍。
评论前必须登录!
注册