无法从Minikube内的本地docker不安全注册表存储库中提取图像
我正在运行Docker工具箱v1.12.2,使用安装在Windows 7下的Oracle VirtualBox 5.1.6上的Linux VM(Upstart)。
我已经创建了一个docker映像,并将其推送(标记,然后推送)到本地不安全的docker注册表v2中,该注册表在192.168.99.100:5000/image/name上运行。docker run -d -p 5000:5000 --restart=always --name registry registry:2
在VM内部,在/var/lib/boot2docker/profile上,我已经将标志--insecure-registry 192.168.99.100:5000
添加到EXTRA_ARGS中。
docker push
&来自localhost:5000/image/name
的docker pull
在Docker(VM)内工作良好
_catalog可以从Postman:GET http:192.168.99.100:5000/v2/_catalog
访问,我可以在注册表中获取图像。
我用以下命令启动Minikube v0.15.0虚拟机:
minikube start --insecure-registry=192.168.99.100:5000
我隶属于PROXY公司,所以我在命令行(CMD)中添加了代理:set HTTP/HTTPS_PROXY=my.company.proxy:8080
和set NO_PROXY={minikube ip}
然后Kubernetes仪表板开始为我工作。
现在,对于真正的问题,当运行命令时:kubectl run image-name --image=192.168.99.100:5000/image/name --port=9999
从我当地的docker注册表中提取图像到Kubernetes中
部署"镜像名称"创建
但在Kubernetes>Deployments中,我收到了以下错误:
无法提取映像"192.168.99.109:5000/image/name":192.168.99.100:5000/iimage/name:latest的映像提取失败,这可能是因为此请求没有凭据。详细信息:(后台进程的错误响应:Gethttps://192.168.99.100:5000/v1/_ping:隧道或SSL禁止)
有人能帮我解决隧道或SSL禁止的错误吗,这让我疯了,我已经尝试了很多解决方案来配置——在docker、Kubernetes或运行dokcer注册表时的insecrue registery。
顺便问一下,为什么它指的是v1/_ping?我使用的是docker注册表v2。
minikube似乎看不到注册表正在运行的同一网络。你能试着运行minikube ssh
,然后为目录运行curl吗?
此外,作为一种替代方案,您可以运行eval(minikube docker-env)
,然后将本地docker客户端设置为使用minikube中的docker服务器。
因此,例如,如果您构建了一个用myimage/foo
标记的映像,它会构建该映像并将其放在minikube docker主机上,因此当您部署该映像时,它不需要被拉取。