Docker:MacOSX将主机的端口暴露给主机

Docker:MacOSX将主机的端口暴露给主机,第1张

Docker:MacOSX将主机端口暴露给主机

您的问题很可能是您使用的是dockertoolbox或dhingy / dlite或提供 成熟的linux VM的
其他任何东西,然后托管docker
在此VM中运行您的容器。当然,该VM在主机上拥有自己的网络堆栈和IP,这就是您的工具所遇到的问题。容器的裸露端口不是暴露在外

OSX hostlocalhost
,而是暴露在外
OSX Docker-VM-ip


优雅地解决这些问题

将端口
localhost
从容器公开到OSX
  1. 首先,使用/安装docker -for-mac https://docs.docker.com/engine/installation/mac/而不是dockertoolbox或其他工具。它基于特殊的xhyve堆栈,可重用主机网络堆栈
  2. 当您现在执行
    docker run -p 3306:3306 percona
    此 *** 作时,它将在上绑定3306
    osx-host-localhost
    ,因此尝试附加到localhost:3306的所有其他osx工具都可以工作(非常有用),就像使用
    brew install mysql
    或类似方式安装mysql时已经习惯了它
  3. 如果您在使用docker容器的OSX上遇到代码共享性能问题,请检查http ://docker-sync.io-它与docker-for-mac兼容(提示:我对此有偏见)

将端口从OSX主机导出到容器

您实际上并没有真正导出任何东西,而是希望它们可以从所有容器(OSX-host-localhost的所有端口)作为整体进行访问。

如果要 连接容器中 的OSX主机上提供的端口,例如在xdebug会话期间,IDE 将在OSX-host-localhost
上的端口9000 侦听,运行FPM / PHP的容器应 连接 到此端口在Mac上为osx-
localhost:9000,您需要执行以下 *** 作:https
:
//gist.github.com/EugenMayer/3019516e5a3b3a01b6eac88190327e7c

因此,您创建了一个虚拟回送ip,因此您可以使用10.254.254.254:9000从不带容器的情况下访问OSX主机端口-
这是可移植的,并且基本上为您提供了像以前那样开发所需的一切


因此,您可以连接到在Mac上运行并尝试连接到localhost:port的应用程序的容器暴露端口

第二个相反,如果容器中的某些东西想要连接到主机上的端口。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5027323.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存