Docker撰写,在net:host中运行容器


102

我想使用docker-compose在“主机”网络中生成3个服务。这是我的docker-compose.yml文件:

version: '2'
services:
  mysql:
    image: mysql
    net: "host"
  nginx:
    image: nginx
    net: "host"
  app:
    image: tomcat
    net: "host"

我收到以下错误:

$ docker-compose up
[31mERROR[0m: Validation failed in file '.\docker-compose.yml', reason(s):
Unsupported config option for services.app: 'net'
Unsupported config option for services.mysql: 'net'
Unsupported config option for services.nginx: 'net'

我在Windows上使用boot2docker。

Docker和Docker-compose版本:

$ docker -v
Docker version 1.10.2, build c3959b1
$ docker-compose -version
docker-compose version 1.6.0, build cdb920a

如果我通过使用docker run --net = "host"所有内容手动运行所有服务,则一切正常。

在文档中,我读到docker-compose支持net命令:

联网模式。使用与docker client --net参数相同的值。

净额:“ bridge”

净:“无”

净:“容器:[名称或ID]”

净额:“主机”

https://docs.docker.com/v1.6/compose/yml/#net

我究竟做错了什么?


根据@ andy-shinn的答案进行更新,该参数称为network_mode: "host"。如Docker中所述,撰写版本3 #network_mode
Paul Rougieux

Answers:


103

这些文件已经过时了。我猜URL中的1.6适用于Docker 1.6,而不是Compose 1.6。在此处检查正确的语法:https : //docs.docker.com/compose/compose-file/#network_mode。您network_mode在使用v2 YAML格式时正在寻找。


真令人困惑……我会立即将文档链接添加为书签。network_mode工作正常,谢谢!
Benoit Wickramarachi

据我了解,我应该在服务下使用network_mode:“ host”?
Taras Vaskiv

27
请注意,network_mode: host在Mac的
docker

1
在Mac上@FlavienVolken,一种解决方案是显式使用主机IP。您可以使用一些特殊的主机名来指向该主机名(docker_host_domain或类似的名称,我忘记了)。
oooyaya

72

只是打印

network_mode: "host"


“ network_mode”和“ networks”不能组合使用。如果您已经拥有网络-它将无法工作。
Alex Efimov

1
network_mode: host不适用于Mac的
docker


3

也许我回答得很晚。但是我在docker compose中配置主机网络时也遇到了问题。然后,我仔细阅读了文档并进行了更改,然后它起作用了。请注意,此配置适用于docker-compose版本“ 3.7”。这里einwohner_net和elk_net_net是我的应用程序所需的用户定义网络。我正在使用主机网络来获取一些系统指标。

链接到文档https://docs.docker.com/compose/compose-file/#host-or-none

version: '3.7'
services:
  app:
    image: ramansharma/einwohnertomcat:v0.0.1
    deploy:
      replicas: 1
      ports:
       - '8080:8080'
    volumes:
     - type: bind
       source: /proc
       target: /hostfs/proc
       read_only: true
     - type: bind
       source: /sys/fs/cgroup
       target: /hostfs/sys/fs/cgroup
       read_only: true
     - type: bind
       source: /
       target: /hostfs
       read_only: true
    networks:
     hostnet: {}
    networks:
     - einwohner_net
     - elk_elk_net
networks:
 einwohner_net:
 elk_elk_net:
   external: true
 hostnet:
   external: true
   name: host

2
>仅在使用docker stack命令时使用。如果使用docker-compose命令,请改用network_mode。
thisismydesign

-8

删除services.app:'net'的警告配置选项,它将起作用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.