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

时间:2019-02-08 14:48:07

标签: docker docker-compose

在本地开发中,我经常接触docker-compose来获取诸如db这样的服务,这些服务的移动并不多,只是为了简化操作并使其与主机隔离。

现在是典型示例-我正在使用webpack开发基于节点的SPA,并具有mongodb的支持。在部署时,它们与Kubernetes捆绑在一起。

在本地,在开发 app 时,我肯定是出于生产力的考虑而从主机上提供该服务,但对于支持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或只是桥接docker的方法。主机的网络名称...?但是我的搜索能力使我不满意,我似乎找不到办法……?我找到了很多关于从容器到主机到达 的文档,但是由于某种原因,如果没有手动使用HOST_PORT进行公开,则不是相反的方法。

我基本上只想要一种使用某种命名方式从主机连接到CONTAINER_PORT上的Docker容器的方法,这种命名方式比端口号更容易在我的脑海中动摇?

也许我在这里遗漏了一些非常明显的东西……任何提示都值得赞赏!

1 个答案:

答案 0 :(得分:0)

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

  

适用于Mac的Docker桌面无法将流量路由到容器

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

  

我们当前的建议是发布端口,或从另一个容器连接。即使容器在覆盖网络而不是桥接网络上,这也是在Linux上也需要执行的操作,因为这些容器未路由。

https://docs.docker.com/docker-for-mac/networking/