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

Ben*_*chi 84 docker boot2docker docker-compose

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

version: '2'
services:
  mysql:
    image: mysql
    net: "host"
  nginx:
    image: nginx
    net: "host"
  app:
    image: tomcat
    net: "host"
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

$ 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'
Run Code Online (Sandbox Code Playgroud)

我在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
Run Code Online (Sandbox Code Playgroud)

如果我通过使用手动运行所有服务docker run --net = "host"工作正常.

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

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

网:"桥"

网:"无"

net:"container:[name or id]"

网:"主人"

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

我究竟做错了什么?

And*_*inn 89

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

  • 请注意,`network_mode:host`不适用于Mac的docker (16认同)

And*_*rey 60

打印一下

network_mode: "host"


Sar*_* Ak 10

你可以尝试添加

network_mode: "host"
Run Code Online (Sandbox Code Playgroud)

例如:

version: '2'
services:
  feedx:
    build: web
    ports:
    - "127.0.0.1:8000:8000"
    network_mode: "host"
Run Code Online (Sandbox Code Playgroud)

列表选项可用

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
Run Code Online (Sandbox Code Playgroud)

https://docs.docker.com/compose/compose-file/#network_mode

  • `docker-compose up` 将失败并显示一条消息: docker.errors.InvalidArgument: "host" network_mode is incomplete with port_bindings。值得注意的是,从 3.8 版本开始,运行 `docker-compose config` 并不能捕获这个问题。 (11认同)

小智 5

也许我回答得很晚。但是我在 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
Run Code Online (Sandbox Code Playgroud)

  • > 仅在使用 docker stack 命令时使用。如果您使用 docker-compose 命令,请改用 network_mode。 (3认同)