如何使用dns从主机访问docker网络?

如何使用dns从主机访问docker网络?,docker,docker-compose,Docker,Docker Compose,在本地开发中,我经常接触docker compose,以获得像db这样的服务,这些服务只是为了简单和与主机隔离而移动不多 现在的典型例子是——我正在开发一个基于节点的SPA,它带有webpack,并且有一个支持mongodb。在部署时,它们与Kubernetes绑定在一起 在本地,在开发应用程序时,由于生产力的原因,我肯定希望从主机上提供服务,但对于支持mongodb,我宁愿使用一个简单的docker compose。所以我只是像往常一样设置它: version: '3.7' services:

在本地开发中,我经常接触docker compose,以获得像db这样的服务,这些服务只是为了简单和与主机隔离而移动不多

现在的典型例子是——我正在开发一个基于节点的SPA,它带有webpack,并且有一个支持mongodb。在部署时,它们与Kubernetes绑定在一起

在本地,在开发应用程序时,由于生产力的原因,我肯定希望从主机上提供服务,但对于支持mongodb,我宁愿使用一个简单的docker compose。所以我只是像往常一样设置它:

version: '3.7'
services:
  mongo:
    image: mongo:4.1.7-xenial
    command: "mongod"
    ports: 
      - 5000:27017
    volumes:
      - kb-front-db:/data/db
volumes:
  kb-front-db:
然而,这次我在主机端口5000上发生了冲突,因为我已经在另一个项目中使用了它。我有很多这样的项目

所以…我真的不想为我的所有项目想出某种端口编号方案来避免冲突,所以我正在寻找一种方法来使用dns,或者只是从主机上获取桥接器网络名…?但我的搜索技能在这里让我失望,我就是找不到一个方法…?我找到了很多关于从容器到主机的文档,但由于某些原因,如果不使用host_PORT手动公开,就不能使用其他方法

我基本上只是想用一种比端口号更容易在我脑海中点选的命名方式,从主机连接到容器_端口上的docker容器


也许我错过了一些非常明显的东西…非常感谢任何提示

无法在OSX上以桥接模式将流量从主机路由到Docker容器:

Mac Docker Desktop无法将流量路由到容器

推荐的解决方案正是我想要避免的:

我们当前的建议是发布一个端口,或者从另一个容器连接。即使在Linux上,如果容器位于覆盖网络(而不是网桥网络)上,您也需要这样做,因为这些都不是路由的


在OSX上,无法以桥接模式将流量从主机路由到Docker容器:

Mac Docker Desktop无法将流量路由到容器

推荐的解决方案正是我想要避免的:

我们当前的建议是发布一个端口,或者从另一个容器连接。即使在Linux上,如果容器位于覆盖网络(而不是网桥网络)上,您也需要这样做,因为这些都不是路由的