【问题标题】:How can I deploy my custom dhcp server on docker?如何在 docker 上部署我的自定义 dhcp 服务器?
【发布时间】:2023-07-20 08:52:02
【问题描述】:

所以我为特定的工作编写了我自己的自定义 dhcp 服务器,我想使用 docker 来部署它。我需要在端口 67/udp 上公开它并使用 network_mode 主机。我尝试像这样配置我的 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
    ports: 
      - "67:67/udp"
    network_mode: "host"

但我刚刚发现我无法使用 network_mode 主机公开端口。那么如何使用 docker 部署它。

【问题讨论】:

  • 非管理员/root用户无法打开1024以下的端口。
  • @LMC 但是如果你在运行 Docker,你就是 root。
  • 操作系统级别的 Docker 服务由 root 运行,但 docker 实例应尽可能由非特权用户运行。

标签: docker docker-compose dhcp


【解决方案1】:

但我刚刚发现我无法使用 network_mode 主机公开端口。

虽然这是真的,但这是因为它是不必要的。当您在主机网络命名空间中运行时,您不需要使用端口映射,因为您在 上侦听的任何端口都是 主机端口。只要您的自定义 DHCP 服务器正在侦听端口 67 上的 UDP 流量,一切就绪。

如果事情似乎不正常,您可以尝试一些诊断步骤。

  • 如果您运行非自定义 dhcp 服务器会发生什么? dnsmasq 很适合这个,因为它的配置相对简单。

  • 将调试代码添加到您的自定义 dhcp 服务器。它是否收到任何请求?

  • 检查您的防火墙;你有没有可能阻止 dhcp 请求?

等等

【讨论】:

    最近更新 更多