当前位置: 首页 > 知识库问答 >
问题:

使用每个容器的相同端口自动将容器映射到docker主机的/etc/hosts

宗政法
2023-03-14

我有一个基本的docker compose设置,包括以下内容:

  • docker网桥子网从192.168.50.0/24开始
  • 4项服务:兔子、spring配置、票价、入住
  • 每个服务都正确设置了主机名,并且能够在子网(192.168.50.0)中找到彼此。IP动态地归属于这个子网,它们都从各自容器中的8080端口开始
  • 从主机上可以看到网桥网络,并且可以使用其ip访问容器的每个实例

如果不将8080以外的端口映射到docker主机,我就无法解析这些主机条目。

对于我主机的/etc/hosts:192.168.50.1配置书签入中的这个条目:只有当我明确地将服务的端口8080绑定到我主机的端口8081、端口8082、端口8083时,服务才可访问。。。对于中的每个服务。yml文件。

有没有其他方法可以确保即使在子网之外也可以通过dns名称发现服务?

共有1个答案

邓正谊
2023-03-14

不能将所有4个容器绑定到主机上的同一端口。每个港口只有一个集装箱。但有一些变通办法:

  • 对于exmaple,绑定端口8081、8082、8083和8084

您的/etc/hosts可能如下所示:

192.168.50.1 fares
192.168.50.2 rabbit
...

您可以在docker-compose.yml.中设置一个额外的Docker容器作为反向代理。反向代理容器可以绑定到端口8080,并根据主机名将请求转发到正确的容器。您不需要从主机上的其他容器绑定端口,因为您的反向代理正在转发请求。有一篇博客文章详细解释了这是如何工作的:http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/

 类似资料:
  • 问题内容: 主机可以打开Docker容器访问端口吗?具体来说,我在主机上运行了MongoDB和RabbitMQ,我想在Docker容器中运行一个进程以侦听队列并(可选)写入数据库。 我知道我可以将端口从容器转发到主机(通过- p选项),并可以从Docker容器中连接到外部环境(即Internet),但我不想公开RabbitMQ和MongoDB端口从主持人到外界 编辑:一些澄清: 我必须执行此技巧才

  • 我有两个dockerated应用程序,它们是docker网络的一部分,都在8080端口上启动。我需要它们都暴露在主机上,这就是为什么我相应地暴露它们到8080和8081。 我无法控制这些应用程序(我无法更改它们的端口),它们只是端到端测试套件的一部分,需要运行这些套件才能执行测试。 问题:根据阉羊的不同,我在docker容器(同一个docker-comuse文件中的3d应用程序)或本地执行测试,我

  • 问题内容: 我想在不同主机上的某些Docker容器中运行任务。而且我编写了一个管理器应用程序来管理容器(启动任务,停止任务,获取状态等)。容器启动后,它将向管理器发送一个http请求及其地址和端口,因此管理器将知道如何管理该容器。 由于同一主机上可能运行着多个容器,因此它们将被映射到不同的端口。要在我的经理上注册一个容器,我必须知道每个容器映射到哪个端口。 如何 在 Docker容器中获取映射的端

  • 为了使项目的开发更容易,我在docker容器中放置了它所依赖的几个服务。这使得项目配置中的“localhost”在传递给其中一个容器时具有不同的含义。 编辑 清楚地说,我试图将容器的一个端口转发到主机,因此当容器中运行的进程试图访问localhost:5432时,它将连接到主机的端口5432。 结束 我目前正在使用 将目标为“本地主机”的任何内容重定向到容器的主机。它在这种情况下有效,但我更愿意找

  • 问题内容: 我想这样做,以便我启动的Docker容器使用与我运行的主机相同的设置。有没有办法做到这一点? 我知道docker run 有一个选项,但这并不是我想要的,因为主机的文件在不同的机器上可能不同,所以用硬编码确切的IP /主机对我来说不是很好。 问题答案: 使用在泊坞窗运行命令。这告诉Docker使容器使用主机的网络堆栈。您可以在此处了解更多信息。

  • 我有一个swarm集群,我在其中创建了一个全局服务,在集群中的所有docker主机上运行。 目标是让此服务的每个容器实例连接到侦听docker主机上的端口。 有关详细信息,我将遵循此Docker守护进程指标指南,以在所有主机上公开新的docker指标API,然后将该主机端口代理到覆盖网络中,以便Prometheus可以从所有群主机中抓取指标。 我已经阅读了多个docker github问题#839