簡體   English   中英

如果使用“network_mode:host”,容器無法訪問主機服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM