在 Ubuntu 18 上,我根据这些说明安装了 Docker (19.03.12)
然后经历了这些步骤
以非根用户身份管理 docker https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user
启动时使用
systemd
https://docs.docker.com/engine/install/linux-postinstall/#configure-docker-to-start-on-boot
并使用它设置一个私有(private)的 docker registry
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
我看到了这条消息
Failed to pull image "my.registrydomain.lan:5000/name:1.0.0.9": rpc error: code = Unknown desc = Error response from daemon: Get https://my.registrydomain.lan:5000/v2/: http: server gave HTTP response to HTTPS client
编辑:我忘了提到我能够通过 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"
正如评论中所建议的,您可能需要查看此 github案件。它通过您的问题的几个解决方案:
First是检查您的主机文件并正确更新它,如果您在另一个节点上托管您的存储库。 Second解决方案与将图像推送到存储库有关,这为用户提供了 insecure-registries
和 docker push
命令区分大小写。 Third一种是使用systemd来控制docker daemon。
最后,如果这些方法没有帮助,我会尝试清除所有设置、卸载 docker、清除 docker 配置并从头开始。
关于docker - 无法从不安全的私有(private)注册表中将图像拉入 minikube - http : server gave HTTP response to HTTPS client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63911296/