【问题标题】:Access localhost and docker network using docker-compose使用 docker-compose 访问 localhost 和 docker 网络
【发布时间】:2019-11-14 20:50:22
【问题描述】:

我在一个 docker-compose 文件中运行了两个不同的服务。我通过引用容器的服务名称来与每个服务对话。

现在我希望我的容器 A 也可以访问 localhost。为此,我添加了“network_mode=host”的配置,但这会产生一个错误,指出容器 A 无法与容器 B 通信。

version: '2'

services:
  rocketchat:
    image: myimage
    environment:
      - MONGO_URL=mongodb://mongo:27017/dbname
    depends_on:
      - mongo
    ports:
      - 3000:3000
    network_mode: host

  mongo:
    image: mongo:3.2
    ports:
      - 27017:27017

对于每个撰写文件 docker-compose 都会创建一个网络,所以在这种情况下,我是否也应该手动将容器分配到一个专用网络?或者有什么办法可以同时访问这两个网络?

【问题讨论】:

标签: docker docker-compose


【解决方案1】:

尝试添加links

version: '2'

services:
  rocketchat:
    image: myimage
    environment:
      - MONGO_URL=mongodb://mongo:27017/dbname
    depends_on:
      - mongo
    ports:
      - 3000:3000
    links:
      - mongo
    #network_mode: host

  mongo:
    image: mongo:3.2
    ports:
      - 27017:27017

如果您使用链接,则不需要network_mode: host

编辑 - 其他解决方案:

version: '2'

services:
  rocketchat:
    image: myimage
    environment:
      - MONGO_URL=mongodb://localhost:27017/dbname
    depends_on:
      - mongo
    ports:
      - 3000:3000
    network_mode: host

  mongo:
    image: mongo:3.2
    ports:
      - 27017:27017
    network_mode: host

【讨论】:

  • 第一个选项观察到错误:“冲突选项:主机类型网络不能与链接一起使用。这将导致未定义的行为”,第二个选项有效,谢谢。
猜你喜欢
  • 2020-01-22
  • 2019-04-08
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-05
  • 2020-08-09
相关资源
最近更新 更多