Traefik как прокси для контейнера Docker с сетью хост-компьютеров

Я хотел бы настроить следующий сценарий:

  • Одна физическая машина с контейнерами Docker
  • траефик в контейнере с сетью backend
  • другой контейнер, который использует сеть хост-компьютеров (network_mode: host)

Traefik успешно находит контейнер и добавляет его с IP-адресом 127.0.0.1, который явно недоступен из контейнера traefik (другая сеть/мост).

докер-compose.yml:

version: '3'
services:
    traefik:
        image: traefik
        ports:
            - "80:80"
            - "443:443"
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            - ./traefik.toml:/etc/traefik/traefik.toml
        networks:
            - backend
     app:
         image: my_app
         labels:
             - "traefik.enable=true"
             - "traefik.frontend.rule=Host:myapp.example"
             - "traefik.port=8080"
         network_mode: host
networks:
    backend:
        driver: bridge

Контейнер app добавляется с

Server      URL                     Weight 
server-app  http://127.0.0.1:8080   0
Load Balancer: wrr

Конечно, я могу получить доступ к app с помощью http://127.0.0.1:8080 на хост-компьютере или с помощью http://$HOST_IP:8080 из контейнера traefik.

Могу ли я как-то убедить traefik использовать другой IP для контейнера?

Спасибо!


person efpe    schedule 18.08.2017    source источник
comment
Попробуйте добавить приложение в серверную сеть.   -  person yamenk    schedule 18.08.2017
comment
Забыл добавить network_mode в конфигурацию контейнера приложения.   -  person efpe    schedule 18.08.2017
comment
Я использую dockertoolbox для Windows, IP-адрес docker-machine — 192.168.99.100, но когда я запускаю свое приложение в network_mode: host , оно принимает 127.0.0.1 вместо 192.168.99.100. можешь помочь с этим?   -  person Abhishek D K    schedule 11.08.2019
comment
Похоже, они работают над этим в новых версиях github.com/containous/traefik/issues/ 5559 Обходной путь: github.com/containous/traefik/issues/< /а>   -  person gaieges    schedule 28.01.2020


Ответы (1)


Без общей сети докеров traefik не сможет выполнить маршрутизацию к вашему контейнеру. Поскольку вы используете хост-сеть, traefik не нуждается в проксировании контейнера, просто получите к нему прямой доступ. Или, если вам нужно получить к нему доступ только через прокси, разместите его в бэкэнд-сети. Если вам нужно, чтобы некоторые порты были опубликованы на хосте, а другие проксировались через traefik, то поместите его в бэкэнд-сеть и опубликуйте порты, которые вам нужно опубликовать, а не напрямую через хост-сеть.

person BMitch    schedule 18.08.2017
comment
Вы правы, я добавил свою резервную копию статически, так как она всегда работает. - person efpe; 27.11.2017
comment
Я использую dockertoolbox для Windows, IP-адрес docker-machine — 192.168.99.100, но когда я запускаю свое приложение в network_mode: host , оно принимает 127.0.0.1 вместо 192.168.99.100. можешь помочь с этим? - person Abhishek D K; 11.08.2019