将 docker run 命令转换为 docker-compose.yml 配置时出现问题

将 docker run 命令转换为 docker-compose.yml 配置时出现问题

我正在尝试为我的家庭网络设置dhcpdDocker 映像。

我已经克隆了这个存储库,并让它与我的工作正常dhcpd.conf

要运行它,我必须使用以下命令执行此命令docker run

docker run -it \
  --rm --init \
  --net host \
  -v "$(pwd)/data":/data \
  networkboot/dhcpd eth0

效果非常好。

但我想将其与我的 DNS docker 捆绑在一起,所以我尝试将其转换为文件docker-compose.yml

version: '2.2'
services:
#
# Imagine the DNS stuff here
#
  dhcp:
    build:
      context: ./dhcp
      network: host
      args:
        - eth0
    container_name: dhcpd
    volumes:
      - ./dhcp/data:/data

这不太顺利:

如果要向主机网络提供 DHCP 服务,则必须添加“docker run”选项“--net=host”。

dhcpd |没有 eth0 (172.19.0.2) 的子网声明。
dhcpd | ** 忽略 eth0 上的请求。如果这不是
dhcpd |你想要,请写一个子网声明
dhcpd |在网段
dhcpd | dhcpd.conf 文件中eth0 连接到哪个接口。 **

我猜我做错了什么,network: host part但我是 docker 新手,所以我不知道哪里出了问题。

$ docker-compose version
docker-compose version 1.21.0, build unknown
docker-py version: 3.4.1
CPython version: 3.7.3
OpenSSL version: OpenSSL 1.1.1d  10 Sep 2019

答案1

解决方案显然是添加network_mode: host到文件中

所以现在是:

version: '2.2'
services:
  dhcp:
    build:
      context: ./dhcp
      network: host
      args:
        - eth0
    container_name: dhcpd
    volumes:
      - ./dhcp/data:/data
    network_mode: host

相关内容