Docker Version 18.04.0-ce忽略不支持的选项:network_mode

时间:2018-04-26 09:29:41

标签: docker shiny docker-compose

对于一个小项目,我希望docker容器中的应用程序能够连接到该机器的localhost。这个问题的答案:From inside of a Docker container, how do I connect to the localhost of the machine?告诉我首选的方法是在docker run命令中使用--net="host"

我使用撰写文件来启动容器。 this question告诉我,net选项已重命名为network_mode: "host"

这是撰写文件的开头

version: '3.6'
services:
  shiny:
    image: paulrougieux/eutradeflows
    deploy:
      restart_policy:
        condition: on-failure
    network_mode: "host"
    ports:
      - "3838:3838"

当我启动此文件时

 sudo docker stack deploy -c stackshiny.yml shiny

我收到错误:

Ignoring unsupported options: network_mode

有关信息

$ sudo docker version
Client:
 Version:   18.04.0-ce
Server:
 Engine:
  Version:  18.04.0-ce

如何从docker容器启用与主机上的数据库的连接?

2 个答案:

答案 0 :(得分:4)

docs for docker-compose file network_mode中所述:

  

注   在群集模式下使用(版本3)Compose文件部署堆栈时,将忽略此选项。   network_mode:“host”不能与链接混合。

使用network_mode在docker swarm上部署时无法使用docker stack deploy。这对于版本18.04来说并不新鲜,但是相当旧。

network_mode只能在使用docker-compose up在本地计算机上部署容器时与docker-compose一起使用。

答案 1 :(得分:0)

通过在端口部分指定模式,我能够绕过 docker stack deploy 的一些限制:

例如在您的 docker-compose.yml 文件中:

ports:
  # Bypass the routing mesh by setting mode to host
  - target: 8080
    published: 80
    protocol: tcp
    mode: host

这里的“绕过路由网格”部分介绍了这一点: https://docs.docker.com/engine/swarm/ingress/

并在此处的“端口长语法”部分中作为 docker compose-spec 中的一个选项列出: https://github.com/compose-spec/compose-spec/blob/master/spec.md