Настройка контейнера

Локальная сборка образа

Tip

Этот шаг можно пропустить, если вы готовы взять на себя риски того, что в контейнере могут быть иньекции.

Получаем репозиторий с .Dockerfile:

git clone git@github.com:4km3/docker-dnsmasq.git

Собираем образ локально.

docker build -t dnsmasq:v2.86 .
docker tag dnsmasq:v2.86 localhost/dnsmasq:v2.86

Созадние контейнера

Создается docker-compose.yml файл:

services:
  dnsmasq:
    image: localhost/dnsmasq:v2.86 # 4km3/dnsmasq:2.86-r0
    cap_add:
      - NET_ADMIN
    ports:
      - "53:53/tcp"
      - "53:53/udp"
    environment:
      #/<domain>/<ipaddr>,/<domain>/<ipaddr>
      DNSMASQ_SERVERS: /<domain>/<ipaddr>
    command: ["-S", "${DNSMASQ_SERVERS}"]

Запускаем:

docker-compose up --build -d

Далее требуется добавить 127.0.0.1:53 в /etc/resolv.conf. Но указания dns сервера в клиента может различаться в зависимости от ваших настроек. В случае если вы используете systemd-resolved в режиме stub, то из него не получится ссылаться на локальный dnsmasq, так как в этом режиме порт 53 уже занят.

hub.docker.com/r/4km3/dnsmasq

Dnsmasq - network services for small networks.

GitHub - 4km3/docker-dnsmasq: My dnsmasq brings all the boys to the yard, and they’re like, it’s smaller than yours! — @andyshinn

network programming - Pass current local ip to dnsmasq command in docker-compose - Stack Overflow

How to Set Up a Local DNS Server with Docker - DEV Community

Альтернатива:

Setting Up a Local DNS Service with Docker on Ubuntu 22.04 - DEV Community