Docker контейнер в контейнер DNS с контейнерным DNS-сервером - PullRequest
0 голосов
/ 28 апреля 2020

Мне трудно понять, как заставить DNS работать для связи между контейнерами. У меня есть dnsmasq и Traefik, а также куча других сервисов. Приведенный ниже docker -compose.yml - это урезанная версия, иллюстрирующая мою настройку.

По сути, я хочу направить контейнеры и внешний трафик c в поисках * .domain.test в контейнер Traefik. , Я ходил кругами в поисках элегантного способа сделать это. Любая помощь очень ценится.

После поднятия стека я запускаю:

docker run --rm --network=traefik praqma/network-multitool dig domain.test

и получаю:

; <<>> DiG 9.14.8 <<>> domain.test
;; global options: +cmd
:: connection timed out; no servers could be reached

docker -compose.yml

version: "3.7"

networks:
  dns: {}
  traefik:
    name: traefik

volumes:
  heimdall-data:

services:
  dnsmasq:
    cap_add:
    - NET_ADMIN
    command:
    - --cache-size=1000
    - --local-ttl=10
    - --address=/.domain.test/192.168.1.10
    - --address=/#/0.0.0.0
    container_name: dnsmasq
    image: andyshinn/dnsmasq:2.78
    labels:
      traefik.enable: "False"
    networks:
      dns: null
    ports:
    - "53:53/tcp"
    - "53:53/udp"
    restart: unless-stopped

  traefik:
    command:
    - --api.insecure=true
    - --providers.docker=true
    - --providers.docker.exposedbydefault=true
    - --entrypoints.web.address=:80
    - --log.level=ERROR
    container_name: traefik
    image: traefik:2.1
    labels:
      traefik.enable: "true"
      traefik.http.routers.api.entrypoints: web
      traefik.http.routers.api.rule: Host(`traefik.domain.test`)
      traefik.http.routers.api.service: api@internal
    networks:
      traefik: null
    ports:
    - 80:80
    - 443:443
    restart: unless-stopped
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock:ro

  heimdall:
    container_name: heimdall
    image: linuxserver/heimdall:2.2.2-ls66
    labels:
      traefik.docker.network: traefik
      traefik.http.routers.heimdall.entrypoints: web
      traefik.http.routers.heimdall.rule: Host(`www.domain.test`, `domain.test`)
    networks:
      traefik: null
    restart: unless-stopped
    volumes:
    - heimdall-data:/config:rw


...