macos - Docker for Mac 虚拟机 IP

标签 macos docker docker-machine

我刚刚从以前使用 Docker Toolbox 和用于 OSX 的 virtualbox 迁移到使用 Docker for Mac。

我以前用$(docker-machine ip default)获取机器IP地址。

有没有可靠的方法来获取 Hyperkit IP 地址?

谢谢!

最佳答案

Docker 工具箱相反,Docker for WindowsDocker 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 连接:

  1. 安装 socat。使用 brew:

    brew install socat

  2. 运行这个 socat 命令将 TCP 请求转发到套接字

    socat TCP-LISTEN:2375,reuseaddr,fork,bind=localhost UNIX-CONNECT:/var/run/docker.sock

  3. tcp://localhost:2375

  4. 上映射你想要的

如果需要,由您在启动时运行 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/

相关文章:

python - macOS 上的 virtualenv 使用不存在的 python 解释器

ios - 企业 Mac 应用分发

python - Tensorflow 对象检测在启动前被杀死

mongodb - 在 dockerized mongo 上初始化数据

docker - 如何连接通过 LAN 连接的两个不同主机上的容器

objective-c - 隐藏带有淡入淡出效果的Mac桌面图标?

amazon-web-services - Jenkins amazon-ecr 插件问题

django - 尝试在docker-machine cookiecutter-django中运行docker-compose时出现``关系不存在''错误

docker - Docker:从docker.io提取图像(最新)时出错

c++ - Xcode LLVM 5.0 错误 -Wunused-command-line-argument-hard-error-in-future