当前位置: 首页 > 面试题库 >

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

邹驰
2023-03-14
问题内容

在我的工作中,我与docker一起工作,而该选项的--net=host工作方式就像将docker容器端口转发到机器的超级按钮一样。这使我可以通过示例添加使用某些端口的艰苦任务:

  • 在9001端口为我的覆盖率报告提供帮助
  • 我的应用程序的本地部署版本在端口9000中提供
  • 手表实时重新加载端口35729
  • 对于单元测试运行器,请使用9876端口

当我开始在Mac中使用Docker时,我遇到的第一个问题是:该选项--net=host不再起作用。我研究了一下,我理解了为什么这是不可能的(Mac中的Docker在自己的虚拟机上运行),而我的瞬时解决方案是使用该-p选项公开端口,但这对我来说增加了使用端口的更多任务的限制,因为我需要-p为我需要公开的每个端口运行显式命令。

有人遇到同样的问题吗? 如何处理呢?


问题答案:

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

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



 类似资料:
  • 问题内容: 我正在尝试使用Docker容器运行PostgreSQL服务器,并从主机上与之连接。 我的配置是: 主机:Mac OS X 10.10.5 Docker 1.10.1 我已经做到了: 第1步 :为永久Postgres数据创建一个卷 步骤2 :启动postgres实例 更新 :如注释中所建议,我在运行容器时指定了端口映射 步骤3 :通过执行以下操作连接到Docker实例: 但是我只想通过以

  • EXPOSE 声明端口 格式为 EXPOSE <端口1> [<端口2>...]。 EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P 时,

  • 27.2 将Bean暴露给JMX MBeanExporter是Spring JMX 框架中的核心类。它负责把Spring bean注册到JMX MBeanServer。例如,下面的例子: package org.springframework.jmx; public class JmxTestBean implements IJmxTestBean { private Stri

  • Exposing models over REST(将模型暴露给REST) 简介 REST 路径 使用 REST 路由 请求数据格式化 使用HTTP查询字符串传递JSON对象或数组 响应数据格式化 禁用 API Explorer 预定义的远程方法(remote methods) 暴露/隐藏 models, 方法, 端点(endpoints) 隐藏的方法和REST端点 案例: 只读端点(endpoi

  • 本文向大家介绍Docker动态给容器Container暴露端口操作,包括了Docker动态给容器Container暴露端口操作的使用技巧和注意事项,需要的朋友参考一下 查看Container的IP地址 docker inspect <container name or id>| grep IPAddress 查看Container的映射的端口 用iptables查看容器映射情况 iptables

  • 本文向大家介绍给Apache虚拟主机增加端口的方法,包括了给Apache虚拟主机增加端口的方法的使用技巧和注意事项,需要的朋友参考一下 找到你的apache安装目录,找到httpd.conf文件,  搜索#listen这一句,在下面增加        这里是测试,你可以根据你的需要增加不同的监听端口,好了apache web的端口开好了,我们要来配置一下虚拟主机了。    找到 类型这段代码,因为