繁体   English   中英

Docker 无法连接到 docker daemon macOS

[英]Docker can't connect to docker daemon macOS

我试图运行docker run hello-world来测试我的 docker 安装是否有效。 然后我使用命令brew services start docker-machine machine 通过 Homebrew 启动 docker 机器。 但是,我收到此错误:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

每次我想连接到 docker 机器时,我都必须执行这篇文章中所述的步骤: Docker 无法连接到 docker 守护进程才能使用我的 docker 机器:

docker-machine start # Start virtual machine for docker
docker-machine env  # It's helps to get environment variables
eval "$(docker-machine env default)" # Set environment variables

我不明白为什么每次我想在我的虚拟机上运行 docker 时都必须执行这些步骤。

您使用docker-machine而不是Docker Desktop应用程序是否有特定原因? 对于后一种,很多事情比如启动虚拟机、设置配置和安装卷都在后台发生。

有关详细信息,请查看https://www.docker.com/products/docker-desktop (确保卸载您当前使用的工具)

docker-machine env上回答您的具体问题:

docker CLI 工具通过 unix 或 tcp 套接字与守护进程交互。 cli 的默认设置是在您提到的路径( unix:///var/run/docker.sock )中查找 unix 套接字。

由于 docker daemon 无法在 MacOS 上原生运行,所以需要使用一些 linux 虚拟机才能在 Mac 上使用 docker。 Docker-machine 是执行此操作的旧方法,它基本上是一种启动新虚拟机的工具,该虚拟机获取一些(相当)随机 IP 地址。 如果你的 MacOS 本地 CLI 现在想要连接到这台机器,它需要在这个特定的 IP 地址上使用 tcp 套接字。 docker-machine env命令基本上为您的 docker CLI 创建了一些环境变量,以覆盖unix:///var/run/docker.sock的默认设置。 除了 TCP 套接字 URL,它还配置了一些证书,用于对 VM 的 docker 套接字进行身份验证。 所有这些环境变量都配置了 docker CLI 工具。

eval命令自动将这些环境变量导出应用到当前活动的 shell。 这些值是短暂的,不会在重新启动或打开新 shell 时持续存在。

您可以将这些值放入您的 shell 配置中,以便自动应用它们(例如在.bashrc.zshrc )。 但由于 IP 地址可能不稳定,您可能会遇到 shell 指向旧配置的问题。 这就是为什么您可能每次都执行此命令以获取当前设置。

有关docker-machine env详细信息,请参阅https://docs.docker.com/machine/reference/env/ 上的文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM