最近许多公网的docker镜像源不能用了,只有用翻墙的办法去外网下载镜像,docker save导出镜像包,docker load在本地导入,docker push到本地部署的镜像服务器,然后Kubernetes就可以使用本地镜像服务器里的镜像了。

这里有个关键步骤,就是搭建本地docker镜像服务器了,鉴于容器部署的便捷性,我们使用容器部署docker镜像服务器。

1、在外网下载docker镜像服务器的镜像:registry:2

docker pull registry:2

docker save registry:2 > registry-2-image.tar.gz

docker load < registry-2-image.tar.gz

2、启动容器

docker run -d --restart=always -p "5001:5000" --network bridge --name "qinhao-registry" registry:2

这个命令创建的容器,对外服务端口是5001,且接受来自所有机器的请求。

3、客户端docker修改配置

此时,如果客户端 docker pull/push 镜像会有报错提示:

server gave HTTP response to HTTPS client

这是因为 docker 客户端默认使用 https 请求镜像,而我为了简单,私有镜像服务器使用的是http。

这就要修改客户端docker的配置文件:

vim /etc/docker/daemon.json

或(snap安装)

vim /var/snap/docker/current/config/daemon.json

对私有镜像服务器,指定非https连接,例如,我的registry:2容器的IP和Port为172.32.155.57:5001,在daemon.json中加入:

"insecure-registries":["172.32.155.57:5001"]

客户端重启docker:

snap restart docker

service docker restart/systemctl restart docker

客户端修改镜像tag,新tag中包括服务器的IP和Port:

docker tag milvusdb/etcd:3.5.5-r4 172.32.155.57:5001/etcd:3.5.5-r4

docker push 172.32.155.57:5001/etcd:3.5.5-r4

其它客户端pull

docker push 172.32.155.57:5001/etcd:3.5.5-r4

4、查看私有docker镜像服务器的内容

curl -X GET http://172.32.155.57:5001/v2/_catalog

curl -X GET http://172.32.155.57:5001/v2/milvus/tags/list

参考

【解决方法】Docker push 报错「server gave HTTP response to HTTPS client」_docker push response-CSDN博客

docker pull 报missing signature key错误_docker pull missing signature key-CSDN博客

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐