需要帮助将 docker 客户端指向我笔记本电脑上的 docker 守护进程 运行

Need help to point docker client to the docker daemon running on my laptop

我在我的 Macbook 上 运行ning minikube。为了在 minikube (VM) 中构建一个 Dockerfile,我使用下面的命令 docker 将我的 docker 客户端指向 minukube 的 docker 守护进程

eval $(minikube docker-env)

我能够在 minikube 上成功构建镜像,并且在完成工作后停止了 minikube。

现在,当我尝试 运行 命令时 "docker images" 我遇到了以下错误

"Cannot connect to the Docker daemon at tcp://:. Is the docker daemon running?"

如果能帮助我解决这个问题,我将不胜感激

注意:我认为它只会持续到终端的当前会话。但仍然想知道是否有更好的方法 w/o 关闭终端的当前会话

如果您查看有关 docker-env 命令 here 的 Minikube 文档,或者 运行 带有 --help 标志的命令,如下所示:

$ minikube docker-env --help
Sets up docker env variables; similar to '$(docker-machine env)'.

Options:
      --no-proxy=false: Add machine IP to NO_PROXY environment variable
      --shell='': Force environment to be configured for a specified shell: [fish, cmd, powershell, tcsh, bash, zsh],
default is auto-detect
  -u, --unset=false: Unset variables instead of setting them

Usage:
  minikube docker-env [flags] [options]

Use "minikube docker-env options" for a list of global command-line options (applies to all commands).

您会注意到 --unset 标志。

尝试 运行宁:

$ eval $(minikube docker-env --unset)

Docker for Mac 不使用到守护进程的 tcp 连接,而是使用套接字连接 (/var/run/docker.sock);检查您的 shell 中是否没有设置覆盖默认连接的 DOCKER_HOST 环境变量。

似乎 minikube 通过设置这三个变量覆盖了默认的 docker 设置

DOCKER_HOST=
DOCKER_TLS_VERIFY=1
DOCKER_CERT_PATH=/some/certs

请取消设置并停止 minikube stop,mac 的 docker 将开始工作。

eval "$(docker-machine env -u)"

它将取消设置 DOCKER_* 个变量。

作为记录,这里是 docker-machine env -u 的输出:

unset DOCKER_TLS_VERIFY
unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_MACHINE_NAME

您可以在此处找到更多信息:docker-mac, docker-unset