docker runコマンドをdocker-compose.yml設定に変換中に問題が発生しました。

docker runコマンドをdocker-compose.yml設定に変換中に問題が発生しました。

私のホームネットワーク用のDockerイメージを設定しようとしていますdhcpd

私は複製しましたこのリポジトリ、私のコンピュータではうまくいきました。dhcpd.conf

これを実行するには、次のコマンドを使用してこのコマンドを実行する必要がありますdocker run

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

効果はとても良いです。

しかし、DNSドッカーと一緒にバンドルしたいので、ファイルに変換しようとしています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の要求を無視します。これが望ましくない場合は、eth0インターフェイスが接続されているdhcpd.confファイルのネットワークセグメントにあります。 dhcpd
のサブネット宣言を作成します。 **

私が何か間違っているようですが、network: host partDockerに初めて触れて何が間違っているのかわかりません。

$ 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

関連情報