Docker 无法将映像从不安全的私有注册表拉入minikube-http:服务器向HTTPS客户端提供了http响应
在Ubuntu18上,我按照这些说明安装了Docker(19.03.12)Docker 无法将映像从不安全的私有注册表拉入minikube-http:服务器向HTTPS客户端提供了http响应,docker,kubernetes,minikube,Docker,Kubernetes,Minikube,在Ubuntu18上,我按照这些说明安装了Docker(19.03.12) 然后经过这些步骤 以非根用户身份管理docker 使用systemd启动 并使用此设置私人docker注册表 docker run -d -p 5000:5000 -e REGISTRY_DELETE_ENABLED=true --restart=always --name registry registry:2 我还将其添加到daemon.json文件中 { "insecure-reg
- 以非根用户身份管理docker
- 使用
systemd启动
docker run -d -p 5000:5000 -e REGISTRY_DELETE_ENABLED=true --restart=always --name registry registry:2
我还将其添加到daemon.json
文件中
{ "insecure-registries" : ["my.registrydomain.lan:5000"] }
并重新启动docker守护进程
sudo /etc/init.d/docker restart
我检查了docker info
,以确保应用了不安全注册表的设置,我在最后看到了这一点,所以看起来还可以
Insecure Registries:
my.registrydomain.lan:5000
127.0.0.0/8
在同一台机器上,我使用此命令启动minikube(1.12.3)
minikube start --driver=docker --memory=3000 --insecure-registry=my.registrydomain.lan:5000
因此,一切正常运行,我继续使用kubectl
应用部署,但当我到达需要从本地注册表中提取容器的pod时,我会获得ErrImagePull
状态。这是我部署的一部分
spec:
containers:
- name: my-container
image: my.registrydomain.lan:5000/name:1.0.0.9
imagePullPolicy: IfNotPresent
当我描述使用失败的pod时
kubectl describe pod mypod-8474577f6f-bpmp2
我看到了这个消息
无法提取映像“my.registrydomain.lan:5000/name:1.0.0.9”:rpc
错误:code=Unknown desc=来自守护进程的错误响应:Get
:http:server给了http
对HTTPS客户端的响应
编辑:我忘了提到我可以通过http将我的图像从一台单独的机器推送到注册表中,而不会出现任何问题(机器是Windows 10,我在守护程序配置中设置了不安全的注册表选项)我尝试使用与您提供的设置完全相同的设置重现您的问题,效果很好。图像被拉出来没有任何问题。我用我的debian 9和新的ubuntu安装测试了这个设置:
minikube version: v1.12.3
docker version: v19.03.12
k8s version: v1.18.3
ubuntu version: v18
问题中没有描述的我所做的是在minikube容器主机文件中放置一个条目:
root@minikube:/# cat /etc/hosts
...
10.128.5.6 my.registrydomain.lan
...
以及标记/推送命令:
docker tag 4e2eef94cd6b my.registrydomain.lan:5000/name:1.0.0.9
docker push my.registrydomain.lan:5000/name:1.0.0.9
以下是pod中的描述:
Normal Pulling 8m19s (x5 over 10m) kubelet, minikube Pulling image "my.registrydomain.lan:5000/name:1.0.0.9"
正如评论中所建议的,您可能需要检查此案例。它涉及到您的问题的两种解决方案: 如果您在另一个节点上托管存储库,则检查主机文件并正确更新它。解决方案与将图像推入存储库有关,该存储库为用户提供了
不安全注册表
和docker push
命令区分大小写的功能。一种是使用systemd来控制docker守护进程
最后,如果这些都没有帮助,我会尝试清除所有设置,卸载docker,清除docker配置,然后从头开始。我尝试使用与您提供的设置完全相同的设置重现您的问题,效果很好。图像被拉出来没有任何问题。我用我的debian 9和新的ubuntu安装测试了这个设置:
minikube version: v1.12.3
docker version: v19.03.12
k8s version: v1.18.3
ubuntu version: v18
问题中没有描述的我所做的是在minikube容器主机文件中放置一个条目:
root@minikube:/# cat /etc/hosts
...
10.128.5.6 my.registrydomain.lan
...
以及标记/推送命令:
docker tag 4e2eef94cd6b my.registrydomain.lan:5000/name:1.0.0.9
docker push my.registrydomain.lan:5000/name:1.0.0.9
以下是pod中的描述:
Normal Pulling 8m19s (x5 over 10m) kubelet, minikube Pulling image "my.registrydomain.lan:5000/name:1.0.0.9"
正如评论中所建议的,您可能需要检查此案例。它涉及到您的问题的两种解决方案: 如果您在另一个节点上托管存储库,则检查主机文件并正确更新它。解决方案与将图像推入存储库有关,该存储库为用户提供了
不安全注册表
和docker push
命令区分大小写的功能。一种是使用systemd来控制docker守护进程
最后,如果这些都不起作用,我将尝试清除所有设置,卸载docker,清除docker配置,然后从头开始。查看相关内容查看相关内容在卸载并重新安装所有内容后,我再次尝试,但仍然不起作用,因此我尝试了您引用的第三个步骤,但出现了一个错误(代码=退出,状态=1/失败)这只是启用不安全注册表的另一种方法,但我验证了它是使用daemon.json添加的。我也可以像以前一样从Windows计算机上的不安全客户端推送,只是从minikube推送,我无法拉。可能是minikube的问题?卸载并重新安装所有内容后,我再次尝试,但仍然无法工作我尝试了您引用的第三个步骤,但我得到了一个错误(code=exited,status=1/FAILURE),这只是启用不安全注册表的另一种方法,但我验证了它是使用daemon.json添加的。我也可以像以前一样从Windows机器上的不安全客户端推送,只是从minikube推送,我无法拉。可能是minikube的问题?