首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker修改的节点容器在docker群覆盖网络中未连接或看到mongo db容器

Docker修改的节点容器在docker群覆盖网络中未连接或看到mongo db容器
EN

Stack Overflow用户
提问于 2019-03-06 16:30:38
回答 1查看 199关注 0票数 1

我有一个docker swarm服务,它使用mongodb,mongo-express和一个自定义的节点图像。我已经创建了一个简单的docker yaml文件来一起启动它们。

代码语言:javascript
复制
version: '3.1'

services:
  mongo:
    image: mongo:4.0.6-xenial
    environment:
      MONGO_INITDB_ROOT_USERNAME:
      MONGO_INITDB_ROOT_PASSWORD:

  mongo-express:
    image: mongo-express
    environment:
      MONGO_INITDB_ROOT_USERNAME:
      MONGO_INITDB_ROOT_PASSWORD:
    ports:
    - "8081:8081"

  backend:
    image: backend
    ports:
     - "2222:2222"

现在我知道docker swarm会自动在所有节点之间创建一个默认的覆盖网络。我的docker inspect网络显示了网络中的所有容器。我可以看到使用localhost:2222和mongo-express使用localhost:8081连接的后端。

我的问题是后端没有连接,它甚至看不到mongo数据库。我尝试ssh进入mongo-express容器,pinged localhost:27017成功,然后pinged localhost:2222成功。

然而,试图从后端容器ping/curl mongo-express或mongodb却什么也看不到,就像端口甚至看不见一样。(localhost:2222可以工作,但localhost:8081或localhost:27017不行)。

编辑:在从docker inspect network复制mongo的ip地址后,我再次ssh到后端容器中,然后我们能够成功地curl 10.0.5.8:27017。为什么它不在本地主机上?

EN

回答 1

Stack Overflow用户

发布于 2019-03-06 18:47:27

每个容器都有自己的IP地址。这意味着在docker容器中,localhost引用自身。这就是为什么您不能期望使用localhost从mongo-express容器到达mongo容器的IP地址。

Docker compose和swarm为我们提供了一种方便的方法,可以通过docker-compose.yml文件中定义的服务名称来寻址容器。

因此,在mongo-express容器中,使用mongo:27017连接到mongo。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55018632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档