命令eval $(minikube docker-env)由于显示错误“无法连接到docker daemon”而无法正常工作

时间:2019-06-04 15:48:45

标签: docker kubernetes docker-machine minikube

我已经使用以下命令启动了minikube

minikube start --insecure-registry k8s.gcr.io --insecure-registry registry-1.docker.io --insecure-registry gcr.io --insecure-registry registry.gitlab.com

启动后,我使用minikube status检查状态,输出如下:

host: Running
kubelet: Running
apiserver: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.107

然后我运行命令eval $(minikube docker-env),以便它可以使用minikube正在使用的docker守护程序。

该命令按预期运行。当我检查DOCKER_HOST时,得到以下值tcp://192.168.99.107:2376

问题在我运行docker命令时开始。

例如,当我运行docker run hello-world时,该命令将挂起一段时间,然后得到以下输出

docker: error during connect: Post https://192.168.99.107:2376/v1.39/containers/create: Service Unavailable.

您可能会注意到的一件事是DOCKER_HOST使用TCP,docker run将使用HTTPS。我不知道,但是也许可以帮助解决此问题。

1 个答案:

答案 0 :(得分:0)

HTTPS 可以在任何可靠的流传输协议上运行。通常是 TCP

1。。检查图像是否已构建。

要在Kubernetes中运行Docker映像,您只需使用

$ kubectl run hello-world --image=... --port=... --image-pull-policy=...

但是您也必须设置Docker守护程序。您可以在这里找到更多信息:docker-daemon

2。。如果尚未使用 2376 端口,请检查它。

3。。尝试以root用户身份运行命令: 作为sudo docker ...而不是docker ...运行它。 您所运行的用户可能没有权限与该系统上的/var/run/docker.sock对话。

4。。您使用哪个版本的minikube?在minikube v0.10.0 中,如果机器已经存在,则--insecure-registry标志将被忽略。)首先检查--insecure-registry =是否已正确复制到新VM的/ var / lib / boot2docker / profile中。如果要遵守新标记,必须首先删除minikube。

希望对您有帮助。