我刚刚从以前使用 Docker Toolbox 和用于 OSX 的 virtualbox 迁移到使用 Docker for Mac。
我以前用$(docker-machine ip default)
获取机器IP地址。
有没有可靠的方法来获取 Hyperkit IP 地址?
谢谢!
最佳答案
与 Docker 工具箱相反,Docker for Windows 和 Docker for Mac 旨在让您感觉 Docker 直接在您的操作系统上运行,因此它们使用在由 docker 可执行文件直接处理的轻量级管理程序(而不是 VirtualBox)下运行的轻量级虚拟机。
因此,您不会通过 docker-machine 看到它们,也不会看到除 localhost 之外的其他 IP 地址。
Docker for Windows 依赖于 HyperV 管理程序,该管理程序允许网络连接到 tcp://localhost:2375
。
Docker for Mac 依赖于 xhyve 管理程序,它的实现方式仅提供通过套接字 unix:///var/run/docker 的连接.sock
.
解决方法
为 Docker for Mac 提供 TCP 连接:
安装 socat。使用 brew:
brew install socat
运行这个 socat 命令将 TCP 请求转发到套接字
socat TCP-LISTEN:2375,reuseaddr,fork,bind=localhost UNIX-CONNECT:/var/run/docker.sock
在
tcp://localhost:2375
上映射你想要的
如果需要,由您在启动时运行 socat 命令。
这对我来说很有用,例如将 Webstorm nodeJS 调试器 关联到 nodeJS 容器(因为在撰写本文时,docker 调试 由 Webstorm docker 集成插件支持,但不通过 unix 套接字)。
Docker for Mac 限制文档
https://docs.docker.com/docker-for-mac/networking/#/known-limitations-use-cases-and-workarounds
There is no docker0 bridge on macOS
Because of the way networking is implemented in Docker for Mac, you cannot see a docker0 interface in macOS. This interface is actually within HyperKit.
关于macos - Docker for Mac 虚拟机 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41267305/