作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注我,我尽量把自己会的都分享给大家,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

亲测有效的docker下载镜像的方法,最近搭建k8s集群,用的是阿里云的镜像地址。
1.初始化集群
kubeadm init \
--apiserver-advertise-address=192.168.0.97 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.12 \
--pod-network-cidr=10.244.0.0/162.部署网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml这个插件会涉及到2个镜像
[root@k8s-master ~]# cat kube-flannel.yml |grep image
image: docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel1
image: docker.io/flannel/flannel:v0.25.4由于最近Docker被墙的问题,我们是不能直接下载到这2个镜像的,以下就是变通的方法:
#下载完成以后在修改tag或者修改flannel的镜像地址为下面的地址
docker pull m.daocloud.io/docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel1
docker pull m.daocloud.io/docker.io/flannel/flannel:v0.25.4实际规则就是添加域名前缀
docker.io/flannel/flannel:v0.25.4
|
V
m.daocloud.io/docker.io/flannel/flannel:v0.25.4注意理论它可以替换成任何公网镜像仓库,不仅仅是docker的官方仓库,包括k8s的仓库其实也是可以的,但是实际上提供方肯定会有限制的,具体以官方说明为准。
这里有个问题就是,它可以理解为就是个临时仓库,如果你要的镜像,在这里是没有的,你也是不能下载的。但是你可以通过手工提交PR,然后由机器人自动下载的。也就是如果你需要下载这个镜像,通过下面的方法操作以后才可以通过这个地址去下载,当然这里其实常用的官方镜像都已经默认都有。
以下是一个测试过程
注:这个测试的镜像其实是不存在的,所以最后同步的时候肯定会失败。
#模拟一个临时仓库不存在的镜像
[root@k8s-master ~]# docker pull m.daocloud.io/docker.io/rocketmq
Using default tag: latest
Error response from daemon: pull access denied for m.daocloud.io/docker.io/rocketmq, repository does not exist or may require 'docker login': denied: ? 这镜像不在白名单. this image is not in the allowlist. ? https://github.com/DaoCloud/public-image-mirror/issues/2328 ?
[root@k8s-master ~]# docker pull m.daocloud.io/docker.io/rocketmq:latestpublic-image-mirror/issues/2328 ?准备去提pr(要求你有github的账号才能提交pr)
PR提交地址:https://github.com/DaoCloud/public-image-mirror/issues/new?labels=sync+image&template=sync-image.yml

如果你这个镜像本身没问题 就会看到下面的信息,当然我这个演示是因为这个镜像地址是错误的,所以它失败了。

如果你的地址没问题,则会同步成功,同步成功以后,按照上面的地址转换就可以下载到你要的镜像。