名称

podman-network-create - 创建 Podman 网络

简介

podman network create [选项] [名称]

描述

创建用于 Podman 的网络配置。默认情况下,Podman 会创建一个桥接连接。可以使用 -d macvlan 选项创建 Macvlan 连接。可以使用 -o parent=<设备>--network-interface=<设备> 选项指定 Macvlan 或 IPvlan 的父设备。

如果未提供任何选项,Podman 将为网络分配一个可用的子网和名称。

网络创建完成后,Podman 会显示新添加网络的名称。

选项

--disable-dns

禁用此网络的 DNS 插件,如果启用,该插件可以执行容器到容器的名称解析。它仅支持 bridge 驱动程序,对于其他驱动程序,它始终处于禁用状态。

--dns=ipaddr

设置自定义 DNS 服务器。

此选项可用于覆盖传递给容器的 DNS 配置。通常,当主机 DNS 配置对容器无效时(例如,127.0.0.1),这是必需的。在这种情况下,每次运行都需要 --dns 标志。

可以指定特殊值 none 来禁止 Podman 在容器中创建 /etc/resolv.conf。然后,镜像中的 /etc/resolv.conf 文件将不加修改地使用。

请注意,ipaddr 可以直接添加到容器的 /etc/resolv.conf。但这并不能保证。例如,将 dns_enabled 设置为 true 的自定义网络传递给 --network 将导致 /etc/resolv.conf 仅引用 aardvark-dns 服务器。aardvark-dns 然后将所有非容器名称查询转发到提供的 ipaddr

--driver, -d=driver

管理网络的驱动程序。目前支持 bridgemacvlanipvlan。默认为 bridge。作为无根用户,macvlanipvlan 驱动程序无法访问主机网络接口,因为无根网络需要单独的网络命名空间。

Netavark 后端允许使用所谓的 netavark 插件,请参阅 netavark 中的 plugin-API.md 文档。二进制文件必须放置在指定目录中,以便 Podman 可以发现它,此列表在 containers.conf(5)[network] 部分下的 netavark_plugin_dirs 中设置。

然后,插件的名称可以用作驱动程序来为您的插件创建网络。所有支持的驱动程序和插件列表可以通过 podman info --format {{.Plugins.Network}} 查看。

请注意,macvlanipvlan 驱动程序不支持端口转发。插件是否支持端口转发取决于插件的实现。

--gateway=ip

为子网定义网关。要提供网关地址,需要 subnet 选项。可以指定多次。

--subnet--gateway--ip-range 选项的参数顺序必须匹配。

--ignore

如果已存在同名网络,则忽略创建请求,而不是失败。请注意,尝试使用现有名称和不同参数创建网络不会改变现有网络的配置。

--interface-name=name

此选项将网络配置中的 network_interface 选项映射,请参阅 podman network inspect。根据驱动程序的不同,这可能会产生不同的效果;对于 bridge,它使用网桥接口名称。对于 macvlanipvlan,它是主机上的父设备。它与 --opt parent=... 相同。

--internal

使用 bridge 网络时限制此网络的外部访问。请注意,当使用 CNI 后端时,DNS 将自动禁用,请参阅 --disable-dns

当使用 macvlanipvlan 驱动程序并带有此选项时,不会向容器添加默认路由。因为它绕过了主机网络堆栈,所以 Podman 无法设置额外的限制,如果运行特权容器,它可以自行设置默认路由。如果这是一个问题,则应在实际网络网关上阻止容器连接。

使用 bridge 驱动程序并带有此选项会产生以下影响

  • 主机网络命名空间中的全局 IP 转发 sysctl 不会被更改。

  • 网桥接口上禁用 IP 转发,而不是设置防火墙。

  • 不会向容器添加默认路由。

在所有情况下,启用此选项后,aardvark-dns 将仅解析容器名称。其他查询将以 NXDOMAIN 回答。

--ip-range=range

从范围分配容器 IP。该范围必须是 CIDR 表示法中的完整子网,或者是 <startIP>-<endIP> 语法,与 CIDR 子网相比,它允许更灵活的范围。ip-range 选项必须与 subnet 选项一起使用。可以指定多次。

--subnet--gateway--ip-range 选项的参数顺序必须匹配。

--ipam-driver=driver

为网络设置 ipam 驱动程序(IP 地址管理驱动程序)。如果未设置,Podman 会根据网络驱动程序自动选择一个 ipam 驱动程序。

有效值为:

  • dhcp:从网络上的 dhcp 服务器分配 IP 地址。当使用 netavark 后端时,必须启用 netavark-dhcp-proxy.socket 才能在容器启动时启动 dhcp-proxy,对于 CNI,请改用 cni-dhcp.socket 单元。

  • host-local:本地分配 IP 地址。

  • none:不向接口分配 IP 地址。

podman network inspect 输出的 ipam_options 字段下查看驱动程序。

--ipv6

启用 IPv6(双栈)网络。如果没有给定子网,它会分配一个 ipv4 和一个 ipv6 子网。

--label=key=value

在网络上设置一个或多个 OCI 标签。

--opt, -o=option

设置驱动程序特定选项。

所有驱动程序都接受 mtumetricno_default_route 和选项。

  • mtu:设置最大传输单元(MTU),并接受整数值。

  • metric:设置连接到此网络的每个容器中创建的默认路由的路由度量。接受正整数值。只能与 Netavark 网络后端一起使用。

  • no_default_route:如果设置为 1,Podman 将不会自动向子网添加默认路由。路由仍然可以通过使用 --route 创建自定义路由来手动添加。

此外,bridge 驱动程序支持以下选项

  • vlan:此选项分配 VLAN 标签并启用 vlan_filtering。默认为无。

  • isolate:此选项通过阻止启用此选项的网络之间的流量来隔离网络。

  • com.docker.network.bridge.name:此选项为创建的 Linux 网桥分配给定名称。

  • com.docker.network.driver.mtu:设置最大传输单元(MTU),并接受整数值。

  • vrf:此选项为网桥接口分配 VRF。它接受 VRF 的名称,默认为无。只能与 Netavark 网络后端一起使用。

  • mode:此选项在接口上设置指定的网桥模式。默认为 managed。支持的值

    • managed:Podman 创建和删除网桥并更改其 sysctl。它添加防火墙规则以伪装传出流量,并使用 DNAT 设置传入流量的端口转发。

    • unmanaged:Podman 使用现有网桥。它必须在您要启动使用该网络的容器时存在。即使在创建容器时传递了此类选项,也不会进行 NAT 或端口转发。

macvlanipvlan 驱动程序支持以下选项

  • parent:用于 macvlan 接口的主机设备。默认为默认路由接口。

  • mode:此选项在接口上设置指定的 ip/macvlan 模式。

    • macvlan 支持的值为 bridgeprivatevepapassthru。默认为 bridge

    • ipvlan 支持的值为 l2l3l3s。默认为 l2

此外,macvlan 驱动程序支持 bclim 选项

  • bclim:设置广播排队的阈值。必须是 32 位整数。将此值设置为 -1 将完全禁用广播排队。

--route=route

静态路由,格式为 <CIDR 表示法中的目标>,<网关>,<路由度量(可选)>。此路由将添加到此网络中的每个容器。仅适用于 netavark 后端。如果需要多个静态路由,可以指定多次。

--subnet=subnet

CIDR 表示法中的子网。可以指定多次以为此网络分配多个子网。

--subnet--gateway--ip-range 选项的参数顺序必须匹配。

这对于设置静态 ipv4 和 ipv6 子网很有用。

示例

创建一个没有选项的网络。

$ podman network create
podman2

创建一个名为 newnet 的网络,使用 192.5.0.0/16 作为其子网。

$ podman network create --subnet 192.5.0.0/16 newnet
newnet

创建一个名为 newnetv6 的 IPv6 网络,子网为 2001:db8::/64

$ podman network create --subnet 2001:db8::/64 --ipv6 newnetv6
newnetv6

创建一个名为 newnet 的网络,使用 192.168.33.0/24 并将网关定义为 192.168.33.3

$ podman network create --subnet 192.168.33.0/24 --gateway 192.168.33.3 newnet
newnet

创建一个网络,使用 192.168.55.0/24 子网,IP 地址范围为 192.168.55.129 - 192.168.55.254

$ podman network create --subnet 192.168.55.0/24 --ip-range 192.168.55.128/25
podman5

创建一个具有静态 ipv4 和 ipv6 子网并设置网关的网络。

$ podman network create --subnet 192.168.55.0/24 --gateway 192.168.55.3 --subnet fd52:2a5a:747e:3acd::/64 --gateway fd52:2a5a:747e:3acd::10
podman4

创建一个具有静态子网和静态路由的网络。

$ podman network create --subnet 192.168.33.0/24 --route 10.1.0.0/24,192.168.33.10 newnet

创建一个具有静态子网和静态路由且没有默认路由的网络。

$ podman network create --subnet 192.168.33.0/24 --route 10.1.0.0/24,192.168.33.10 --opt no_default_route=1 newnet

使用主机接口 eth0 创建基于 Macvlan 的网络。Macvlan 网络只能作为 root 使用。

$ sudo podman network create -d macvlan -o parent=eth0 --subnet 192.5.0.0/16 newnet
newnet

另请参阅

podman(1), podman-network(1), podman-network-inspect(1), podman-network-ls(1), containers.conf(5)

历史

2021 年 8 月,Paul Holzinger pholzing@redhat.com 更新了新网络格式

2019 年 8 月,最初由 Brent Baude bbaude@redhat.com 汇编