如何使Network_Mode:“ host”在docker-compose.yml文件中工作

时间:2019-06-10 06:29:27

标签: docker docker-compose dockerfile docker-machine

我正在尝试执行“ docker-compose up ”命令。请在下面找到我的docker-compose文件。我尝试使用 network_mode:“主机” ,但是它不起作用。我在Linux OS上。请您让我知道我是否犯任何错误。

version: '3.6'
services:
   mongo:
      image: "mongo:latest"
      container_name: ohif-mongo
       ports:
         - "27017:27017"

   viewer:
      image: ohif/viewer:latest
      container_name: ohif-viewer
      ports:
        - "3030:80"
      network_mode: "host"   # please make note of the alignment
      links:
         - mongo
      environment:
         - MONGO_URL=mongodb://mongo:27017/ohif
      extra_hosts:
         - "pacsIP:172.xx.xxx.xxx"
      volumes:
         - ./dockersupport-app.json:/app/app.json

执行后,出现以下错误

ERROR: for 8f4c3de7e3a3_ohif-viewer  Cannot create container for service viewer: conflicting options: host type networking can't be used with links. This would result in undefined behavior
 ERROR: for viewer  Cannot create container for service viewer: conflicting options: host type networking can't be used with links. This would result in undefined behavior

我不知道为什么错误消息会显示两次。不确定是否会这样

第二,当我更改network_mode的对齐方式时:“主机”(减1/2个空格)

  ports:
        - "3030:80"
        network_mode: "host"   # please see the change in alignment now
      links:
         - mongo

我收到以下错误消息

ERROR: yaml.parser.ParserError: while parsing a block mapping
 in "./docker-compose.yml", line 10, column 5
expected <block end>, but found '<block mapping start>'
 in "./docker-compose.yml", line 14, column 6

如何以网络=主机模式启动容器?

2 个答案:

答案 0 :(得分:1)

来自docs

  

network_mode:“主机”不能与链接混合。

And about links

  

警告:--link标志是Docker的旧功能。它最终可能会被删除。除非您绝对需要继续使用它,否则建议您使用用户定义的网络来促进两个容器之间的通信,而不要使用--link。用户定义的网络不支持您使用--link进行的一项功能是在容器之间共享环境变量。但是,您可以使用其他机制(例如卷)以更可控的方式在容器之间共享环境变量。

只需删除链接。不再需要它们。

答案 1 :(得分:1)

network_mode:host用于与Host共享相同的网络空间。例如,您可能想从conatiner访问在Linux PC上运行的应用程序。 如果要将服务链接在一起,则可以使用links或depends_on,并且如果服务位于不同的主机上,只需创建一个覆盖网络