使用Minikube时无法从私人仓库中拉出泊坞窗图像

时间:2016-08-03 16:10:18

标签: docker kubernetes x509 boot2docker

我正在尝试使用Minikube进行本地kubernetes开发。我已经设置了docker环境,以便按照建议使用在提供的Minikube VM(boot2docker)中运行的docker守护程序:

eval $(minikube docker-env)

它设置了这些环境变量:

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/home/jasonwhite/.minikube/certs"

当我尝试从私人docker存储库中提取图像时:

docker pull oururl.com:5000/myimage:v1

我收到此错误:

Error response from daemon: Get https://oururl.com:5000/v1/_ping: x509: certificate signed by unknown authority

看来我需要以某种方式添加一个受信任的ca根证书,但到目前为止我的尝试都没有成功。

我可以使用我们的ca root证书使用curl命中存储库:

curl --cacert /etc/ssl/ca/ca.pem https://oururl.com:5000/v1/_ping

7 个答案:

答案 0 :(得分:3)

我根据这些来源的建议想出了解决问题的方法:

https://github.com/docker/machine/issues/1799

https://github.com/docker/machine/issues/1872

我登录了Minikube虚拟机(minikube ssh),并通过附加我自己的ca证书编辑了/usr/local/etc/ssl/certs/ca-certificates.crt文件。

然后我仍在VM中重新启动了docker守护程序:sudo /etc/init.d/docker restart

这不是很优雅,如果我重新启动Minikube VM,我需要每次都重复这些手动步骤。

作为替代方案,我还尝试在--insecure-registry myurl.com:5000环境变量(重新启动的docker)中设置DOCKER_OPTS选项,但这对我没用。

答案 1 :(得分:2)

我无论如何都无法找到将证书送入minikube vm。但是,minikube有一个命令行参数来传递一个不安全的注册表。

minikube start --insecure-registry=<HOST>:5000 

然后在注册表上配置身份验证,创建一个秘密。

kubectl create secret docker-registry tp-registry --docker-server=<REGISTRY>:5000 --docker-username=<USERNAME> --docker-password=<PASSWORD> --docker-email=<EMAIL> --insecure-skip-tls-verify=true

按照kubernetes docs

中的说明向默认服务帐户添加密码

答案 2 :(得分:1)

对于http注册表,此步骤适用于我:

1)minikube ssh

2)修改/var/lib/boot2docker/profile并添加到$ EXTRA_ARGS --insecure-registry yourdomain.com:5000

3)重启docker守护进程sudo /etc/init.d/docker restart

答案 3 :(得分:0)

Kubernetes documentation就此而言非常好。

根据托管私有docker存储库的位置,解决方案看起来会有所不同。该文档说明了如何处理每种类型的存储库。

如果您想要一种自动方法来处理此身份验证,您将需要使用Kubernetes密码并为您的Pod指定imagePullSecrets

答案 4 :(得分:0)

听起来你的问题与Docker有关,而不是Kubernetes。 Docker CLI支持许多TLS-related options。由于您已经拥有CA证书,因此应该可以使用以下内容:

docker --tlsverify --tlscacert=/etc/ssl/ca/ca.pem pull oururl.com:5000/myimage:v1

答案 5 :(得分:0)

An addon was recently added to Minikube使访问私有容器注册表变得更加容易:

minikube addons configure registry-creds
minikube addons enable registry-creds

答案 6 :(得分:0)

您需要编辑xattr -c NameOfYourApp.app,如下所示:

/etc/default/docker

确保# Docker Upstart and SysVinit configuration file # # THIS FILE DOES NOT APPLY TO SYSTEMD # # Please see the documentation for "systemd drop-ins": # https://docs.docker.com/engine/admin/systemd/ # # Customize location of Docker binary (especially for development testing). #DOCKERD="/usr/local/bin/dockerd" # Use DOCKER_OPTS to modify the daemon startup options. DOCKER_OPTS="--insecure-registry oururl.com:5000" # If you need Docker to use an HTTP proxy, it can also be specified here. #export http_proxy="http://127.0.0.1:3128/" # This is also a handy place to tweak where Docker's temporary files go. #export DOCKER_TMPDIR="/mnt/bigdrive/docker-tmp" sudo service docker stop应用更改。然后,您应该能够推/拉到您的注册表。