需要帮助将 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。
我在我的 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。