12.2. systemd なしでの DHCP プラグイン実行

ユーザー定義のネットワークに接続するには、Podman run --network コマンドを使用します。ほとんどのコンテナーイメージには DHCP クライアントがありませんが、dhcp プラグインは、コンテナーが DHCP サーバーを操作するためのプロキシー DHCP クライアントとして機能します。

注記

この手順は、ルートフルコンテナーにのみ適用されます。ルートレスコンテナーでは、dhcp プラグインは使用されません。

前提条件

  • container-tools メタパッケージがインストールされている。

手順

  1. dhcp プラグインを手動で実行します。

    # /usr/libexec/cni/dhcp daemon &
    [1] 4966
  2. dhcp プラグインが動作していることを確認します。

    # ps -a | grep dhcp
    4966 pts/1    00:00:00 dhcp
  3. alpine コンテナーを実行します。

    # podman run -it --rm --network=example alpine ip addr show enp1s0
    Resolved "alpine" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
    Trying to pull docker.io/library/alpine:latest...
    ...
    Storing signatures
    
    2: eth0@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
        link/ether f6:dd:1b:a7:9b:92 brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.22/24 brd 192.168.1.255 scope global eth0
        ...

    この例では、以下のように設定されています。

    • network=example オプションは、接続するネットワークを example という名前で指定します。
    • alpine コンテナーで ip addr show enp1s0 コマンドを実行すると、ネットワークインターフェイス enp1s0 の IP アドレスを確認します。
    • ホストネットワークは 192.168.1.0/24 です。
    • eth0 インターフェイスは、alpine コンテナー用に 192.168.1.122 の IP アドレスをリースしています。
注記

この設定では、有効期限の短いコンテナーとリースの長い DHCP サーバーが多数ある場合に、利用可能な DHCP アドレスが枯渇する可能性があります。