Docker 组成,运行 个容器在 net:host 中
Docker compose, running containers in net:host
我想使用 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-撰写版本:
$ docker -v
Docker version 1.10.2, build c3959b1
$ docker-compose -version
docker-compose version 1.6.0, build cdb920a
如果我 运行 使用 docker run --net = "host"
手动所有服务,一切正常。
在文档中我读到 net 命令在 docker-compose 中 受支持:
net
Networking mode. Use the same values as the docker client --net parameter.
net: "bridge"
net: "none"
net: "container:[name or id]"
net: "host"
https://docs.docker.com/v1.6/compose/yml/#net
我做错了什么?
那些文件已经过时了。我猜 URL 中的 1.6 适用于 Docker 1.6,而不是 Compose 1.6。在此处查看正确的语法:https://docs.docker.com/compose/compose-file/compose-file-v3/#network_mode。使用 v2/v3 YAML 格式时,您正在寻找 network_mode
。
直接打印
network_mode: "host"
可能我回答的晚了。但是我在 docker compose 中配置主机网络时也遇到了问题。然后我仔细阅读了文档并进行了更改并且它起作用了。请注意此配置适用于 docker-compose 版本“3.7”。这里 einwohner_net 和 elk_net_net 是我的应用程序所需的用户定义网络。我正在使用主机网络获取一些系统指标。
Link 到文档 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
你可以尝试只添加
network_mode: "host"
示例:
version: '2'
services:
feedx:
build: web
ports:
- "127.0.0.1:8000:8000"
network_mode: "host"
列表选项可用
network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
我想使用 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-撰写版本:
$ docker -v
Docker version 1.10.2, build c3959b1
$ docker-compose -version
docker-compose version 1.6.0, build cdb920a
如果我 运行 使用 docker run --net = "host"
手动所有服务,一切正常。
在文档中我读到 net 命令在 docker-compose 中 受支持:
net
Networking mode. Use the same values as the docker client --net parameter.
net: "bridge"
net: "none"
net: "container:[name or id]"
net: "host"
https://docs.docker.com/v1.6/compose/yml/#net
我做错了什么?
那些文件已经过时了。我猜 URL 中的 1.6 适用于 Docker 1.6,而不是 Compose 1.6。在此处查看正确的语法:https://docs.docker.com/compose/compose-file/compose-file-v3/#network_mode。使用 v2/v3 YAML 格式时,您正在寻找 network_mode
。
直接打印
network_mode: "host"
可能我回答的晚了。但是我在 docker compose 中配置主机网络时也遇到了问题。然后我仔细阅读了文档并进行了更改并且它起作用了。请注意此配置适用于 docker-compose 版本“3.7”。这里 einwohner_net 和 elk_net_net 是我的应用程序所需的用户定义网络。我正在使用主机网络获取一些系统指标。
Link 到文档 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
你可以尝试只添加
network_mode: "host"
示例:
version: '2'
services:
feedx:
build: web
ports:
- "127.0.0.1:8000:8000"
network_mode: "host"
列表选项可用
network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"