如何解决docker镜像下载失败问题
经常用docker的朋友都知道,docker hub的镜像仓库经常访问不通
root@iZwz97kfjnf78copv1ae65Z:~# docker pull ubuntu:18.04
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
网上有一些方式和教程,比如使用阿里云的镜像仓库,但是这些镜像仓库有约束条件,需要在他们云服务器内才能用。
除了dockerhub的镜像之外,搭建k8s环境需要很多的非dockerhub的镜像,这些同样也存在pull失败的问题。
这篇文章将教你如何使用比扬云的Docker镜像加速服务来免费的解决这些问题。
如何使用
使用方式很简单,不需要注册,也不需要付费,直接打开比扬云/Docker镜像加速,上面有详细的步骤,我这里也简单贴一下。
我们会看到官网上提供了常用镜像源的加速链接,每个镜像源都有专属的加速地址,比如我们dockerhub的官方镜像源的地址是registry-1.docker.io,那么我们会为其生成一个加速地址,比如这里的https://68a1j8mei9xi-registry.1.mirror.gipa.link:9043
,你可以认为两个地址是等价的。
接下来需要调整Docker的配置,把我们的加速地址配进去。
第一步: 查看/etc/docker/daemon.json 文件是否存在,如果不存在需要手动创建
第二步: 复制下面配置,并粘贴进/etc/docker/daemon.json文件
{
"registry-mirrors": [
"https://68a1j8mei9xi-gcr.1.mirror.gipa.link:9043",
"https://68a1j8mei9xi-k8s-gcr.1.mirror.gipa.link:9043",
"https://68a1j8mei9xi-k8s-registry.1.mirror.gipa.link:9043",
"https://68a1j8mei9xi-quay.1.mirror.gipa.link:9043",
"https://68a1j8mei9xi-registry.1.mirror.gipa.link:9043"
],
"insecure-registries": [
"https://68a1j8mei9xi-gcr.1.mirror.gipa.link:9043",
"https://68a1j8mei9xi-k8s-gcr.1.mirror.gipa.link:9043",
"https://68a1j8mei9xi-k8s-registry.1.mirror.gipa.link:9043",
"https://68a1j8mei9xi-quay.1.mirror.gipa.link:9043",
"https://68a1j8mei9xi-registry.1.mirror.gipa.link:9043"
]
}
这里我们配置了很多mirror,如果你不需要这么多,可以只配置dockerhub官方的即可
{
"registry-mirrors": [
"https://68a1j8mei9xi-registry.1.mirror.gipa.link:9043"
],
"insecure-registries": [
"https://68a1j8mei9xi-registry.1.mirror.gipa.link:9043"
]
}
最后一步: 只需要使用systemctl restart docker
命令重启一下Docker即可生效。
测试的方式很简单,用docker pull一个镜像测试就可以,比如docker pull ubuntu:18.04
针对k8s需要用到的镜像,以coredns:v1.8.6
为例子,操作会有些许不一样,但是不会有太复杂的地方。
首先docker pull k8s.gcr.io的加速地址将镜像pull下来
docker pull 68a1j8mei9xi-k8s-gcr.1.mirror.gipa.link:9043/coredns/coredns:v1.8.6
然后重新将这个镜像打成k8s.gcr.io/coredns/coredns:v1.8.6
docker tag 68a1j8mei9xi-k8s-gcr.1.mirror.gipa.link:9043/coredns/coredns:v1.8.6 k8s.gcr.io/coredns/coredns:v1.8.6
这样本地就会有k8s.gcr.io/coredns的镜像了。
root@iZwz97kfjnf78copv1ae65Z:~# docker images |grep coredns
68a1j8mei9xi-k8s-gcr.1.mirror.gipa.link:9043/coredns/coredns v1.8.6 a4ca41631cc7 3 years ago 46.8MB
k8s.gcr.io/coredns/coredns v1.8.6 a4ca41631cc7 3 years ago 46.8MB
通过这种方式就能完美解决dockerhub,k8s访问不通的问题。
但是有一点需要注意的是,官网披露的镜像地址是会更新的,你可以:
- 需要的时候再打开官网去更换新的镜像加速地址
- 注册用户,他们就会为你生成一个固定的加速链接,这个链接就是固定的,不用担心官网变更链接无法使用。
希望通过这种方式,能给工程师朋友们发一些福利。