簡體   English   中英

在主機網絡中運行的 docker 容器的 traefik 代理

[英]traefik proxy for docker container running in host network

我在 docker 容器中運行 traefik 作為代理
我在 Windows 10 中使用 DockerToolBox
traefik 代理能夠識別在 127.0.0.1 中運行的服務應用程序,但該服務應用程序實際上在 docker host = 192.168.99.x ip 中運行

version: '3'
services:
  reverse_proxy:
    image: traefik
    command: --api --docker 
    ports:
      - "81:80"
      - "8081:8080"

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - backend

  whoami:
    image: containous/whoami
  labels:
    - "traefik.frontend.rule=Host:whoami.default"
    - "traefik.enable=true"
    - "traefik.port=80"
  network_mode: host

networks:
  backend:
    driver: bridge  

在 Traefik 儀表板中http://192.168.99.100:8081
它為 whoami 服務顯示http://127.0.0.1:80
而不是http://192.168.99.100:80
任何幫助,將不勝感激。
我想要network_mode: host選擇192.168.99.100而不是127.0.0.1

正如traefik官方文檔所說,在解析服務IP時,首先它

嘗試查找host.docker.internal

第二個

如果查找不成功,則回退到127.0.0.1

這意味着我們可以在 traefik 容器中添加一個主機,使用--add-host {docker0_IP} (它是網橋的 IP,您可以輕松地使用docker inspect {NAME_OF_TRAEFIK}並找到網關的 IP(對我來說,它是172.18.0.1 ). 如果您使用 docker-compose, 您可以使用以下行添加到您的 traefik 定義中:

extra_hosts:
  - host.docker.internal:{docker0_IP}

另外,我發現可以使用 IP my eth0 IP,這意味着您的 LAN 的 IP(對我來說,它是192.168.0.20 )。

然后,重新創建 traefik,一切都像雛菊一樣工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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