使用Minikube时,不能从私人回购中拖出docker图像

我正在尝试使用Minikube进行本地kubernetes开发。 我已经build立了我的docker环境,使用在提供的Minikube VM(boot2docker)中运行的docker守护进程,如下所示:

eval $(minikube docker-env) 

它设置了这些环境variables:

 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根证书,但在我的尝试中至今还没有成功。

我可以用curl使用我们的根证书来打好存储库:

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

我从这些来源的build议中想出了一个解决问题的方法:

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

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

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

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

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

作为替代,我也尝试在DOCKER_OPTS环境variables(restarted DOCKER_OPTS设置--insecure-registry myurl.com:5000选项,但是这对我不起作用。

我一直无法find证书进入minikube vm。 但是,minikube有一个命令行参数传入一个不安全的registry。

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

然后在registry上configuration身份validation,创build一个秘密。

 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文档中的描述将秘密添加到默认服务帐户。

对于httpregistry,这个步骤适用于我:

1) minikube ssh

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

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

关于这个Kubernetes 文档是相当不错的。

根据您的私人docker存储库托pipe的位置,解决scheme看起来有点不同。 文档解释了如何处理每种types的存储库。

如果你想要一个自动的方法来处理这个authentication,你将需要使用一个Kubernetes秘密,并为你的Pod指定imagePullSecrets 。

听起来像你的问题有更多的与Docker比Kubernetes。 Docker CLI支持许多与TLS相关的选项 。 既然你已经有了CA证书,那么应该这样工作:

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

Minikube最近增加了一个插件 ,使访问私有容器registry变得容易得多:

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

你需要编辑/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 stopsudo docker start应用更改。 你应该能够推/拉你的registry。