#docker #docker-compose #dhcp
Вопрос:
Поэтому я кодирую свой собственный dhcp-сервер для конкретной работы и хочу развернуть его с помощью docker. Мне нужно открыть его на порту 67/udp и использовать хост network_mode. Я попытался настроить свою докер-композицию следующим образом.
version: '3'
services:
dhcp:
container_name: custom_dhcp_server
image: registry.patty.com/custom_dhcp_server:latest
restart: always
command: python3 -u src/dhcp_server.py
ports:
- "67:67/udp"
network_mode: "host"
но я только что обнаружил, что не могу открыть порт с хостом network_mode. Итак, как я могу развернуть его с помощью docker.
Комментарии:
1. Пользователи, не являющиеся администраторами/суперпользователями, не могут открывать порты ниже 1024.
2. @LMC, но если вы используете Docker, вы root.
3. Служба Docker на уровне операционной системы запускается root, но экземпляры docker должны запускаться как можно чаще непривилегированным пользователем.
Ответ №1:
но я только что обнаружил, что не могу открыть порт с хостом network_mode.
Хотя это правда, это потому, что в этом нет необходимости. Когда вы работаете в пространстве имен сети хоста, вам не нужно использовать сопоставление портов, потому что любой порт, который вы прослушиваете, является портом хоста. Пока ваш пользовательский DHCP-сервер прослушивает UDP-трафик на порту 67, все готово.
Если что-то не работает, вы можете попробовать выполнить ряд диагностических шагов.
- Что произойдет, если вы запустите нестандартный dhcp-сервер? dnsmasq хорош для этого, потому что его относительно просто настроить.
- Добавьте код отладки на свой пользовательский dhcp-сервер. Получает ли он какие-либо запросы?
- Проверьте свой брандмауэр; есть ли вероятность, что вы блокируете запросы dhcp?
И т.д.