Настройка контейнера
Локальная сборка образа
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 уже занят.
Dnsmasq - network services for small networks.
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