如何在Docker中部署自定义DHCP服务器
network_mode: host模式下容器会直接共享宿主机的网络命名空间,容器内部监听的端口会直接绑定到宿主机的对应端口,ports映射配置不仅不需要,还会被Docker直接忽略,直接删除该字段即可。另外DHCP服务需要处理底层网络报文、监听1024以下的特权端口,建议补充对应网络权限保证服务正常运行。
修正后的docker-compose配置如下:
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 network_mode: "host" # 授予必要网络权限,避免权限不足无法正常提供服务 cap_add: - NET_BIND_SERVICE - NET_RAW - NET_ADMIN
部署注意事项:
- 启动容器前先执行
ss -ulnp | grep :67检查宿主机67/udp端口占用情况,如果存在其他占用进程(比如系统自带的isc-dhcp-server、dnsmasq等),需要先关闭对应进程再启动容器。 - 确认宿主机防火墙放行67/udp端口的入站流量:
- ufw防火墙执行:
ufw allow 67/udp - firewalld防火墙执行:
firewall-cmd --add-port=67/udp --permanent && firewall-cmd --reload
- ufw防火墙执行:
- 容器启动后可以通过
docker logs custom_dhcp_server查看服务运行日志,确认端口监听、请求响应正常即可。
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

