在配置非https的镜像仓库时,docker是不能直接拉取,需要配置daemon.json
官网解决地址:https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry
步骤:
1 我们在daemon.json 里配置镜像仓库地址
vi /etc/docker/daemon.json
{"insecure-registries": "IP"}
注意:daemon.json文件不存在就创建;镜像仓库地址的默认端口不是80时,这里需要指定IP:端口
2 重启docker
systemctl restart docker
然后 docker login 输入用户名密码或者直接:
docker login -u username -p password 镜像仓库地址
然后就可以正常pull镜像
具体用户名密码和URL的关系 保存在 ~/.docker/config.json 里:
用户名和密码用base64加密后保存在对应的auth里
k8s集群拉取非https的私服私有镜像,除了每台主机需要这样配置,还需要配置secret:
注意:拉取公服/私服的公有镜像时不需要配置secret,拉取公服/私服的私有镜像时需要配置secret
如果主机能拉取镜像,但是k8s一直拉取失败时,还有一种可能是没有修改k8s的默认容器引擎为docker
拉取私服镜像时会报错:
Failed to pull image "127.0.0.1/tom/blog:v2.0": rpc error: code = Unknown desc = Error response from daemon: repository 127.0.0.1/tom/blog:v2.0 not found: does not exist or no pull access
而且哪怕我们已经在主机上pull下镜像,k8s还是说找不着或没权限。k8s官方文档说用 secret
官网地址:https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
rancher上配置私服镜像仓库:https://blog.csdn.net/qq_35720307/article/details/87866834