【发布时间】:2020-10-28 17:38:08
【问题描述】:
我在 docker-compose.yml 中定义了 2 个容器。 容器 1 通过 HTTP 请求与在主机上运行的服务进行通信。 容器 2 需要访问互联网,因此设置了 network_mode:host,以便它可以访问主机接口(eth0 和 eth1)。
docker-compose.yml 看起来像:
version: "3"
services:
container1:
image: Image1
environment:
- SYSTEMAPI_URI
cap_add:
- SYS_TTY_CONFIG
devices:
- "/dev/tty1:/dev/tty1"
- "/dev/tty2:/dev/tty2"
volumes:
- /var/lib/docker/volumes/<>
container2:
image: Image2
environment:
- SYSTEMAPI_URI
- STORAGE_FOLDER=/mnt
- CERTIFICATE_PATH=/mnt/cert
- STORAGE_HOST=/var/lib/docker/volumes/<>
- EXTRA_CONFIG=${DOLLAR}SYSTEMAPI_VAR_DNSMASQ_EXTRA_CONFIG
volumes:
- /var/lib/docker/volumes/<>
privileged: true
network_mode: "host"
将network_mode 设置为host,从container1 到主机服务的HTTP 请求因超时而失败。 route 命令只有 eth0 和 eth1 的条目。 如果没有 network_mode,请求会通过,但 container2 会失去与 Internet 的连接。
network_mode 在这里使用正确吗?如果没有,有人可以告诉如何解决这个问题。
【问题讨论】:
标签: docker networking docker-compose docker-container