[英]container not able to access host service if “network_mode: host” used
我在 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 設置為主機時,從 container1 到主機服務的 HTTP 請求因超時而失敗。 route 命令只有 eth0 和 eth1 的條目。 如果沒有 network_mode,請求會通過,但 container2 會失去與 Internet 的連接。
network_mode 在這里使用正確嗎? 如果沒有,有人可以告訴如何解決這個問題。
訪問主機上運行的服務的正確方法是添加extra_hosts
(這里是官方參考)。 您也不需要特權模式(通常最好盡可能避免使用它)。
使用 extra_hosts 你 map 你的容器正在尋找你的主機的 IP 的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.