12.2. 在没有 systemd 的情况下运行 DHCP 插件

使用 podman run --network 命令连接到用户定义的网络。虽然大多数容器镜像都没有 DHCP 客户端,但 dhcp 插件充当容器的代理 DHCP 客户端,以便容器与 DHCP 服务器交互。

注意

此流程只适用于 rootfull 容器。Rootless 容器不使用 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 容器租期 IP 地址 192.168.1.122。
注意

如果您有大量短期容器和一个具有长租用的 DHCP 服务器,此配置可能会耗尽可用的 DHCP 地址。