创建 Podman 网络
摘要
podman network create [options][*name*]
描述
为 Podman 创建一个网络配置。默认情况下,Podman 创建一个桥接连接。
可以使用 -d macvlan 选项创建 Macvlan 连接。可以使用 -o parent=<device>
或 --network-interface=<device>
选项为 macvlan 或 ipvlan 指定一个父设备。
如果没有提供选项,Podman 会为网络分配一个空闲的子网和名称。
创建网络完成后,Podman 会显示新添加网络的名称。
选项
--disable-dns
禁用此网络的 DNS 插件。如果启用,该插件可以执行容器到容器的名称解析。此选项仅支持 bridge
驱动程序,对于其他驱动程序,它总是被禁用的。
--dns=ip
为此网络中的容器设置网络范围的 DNS 解析器/名称服务器。如果没有设置,将使用 /etc/resolv.conf
中的主机服务器。它可以在容器级别使用 podman run/create --dns
选项进行覆盖。此选项可以指定多次以设置多个 IP。
--driver, -d=driver
管理网络的驱动程序。目前支持 bridge
、macvlan
和 ipvlan
。默认为 bridge
。在无根模式下,macvlan
和 ipvlan
驱动程序无法访问主机网络接口,因为无根网络需要一个单独的网络命名空间。
netavark 后端允许使用所谓的 netavark 插件,有关详细信息,请参阅 netavark 中的
plugin-API.md
文档。这些插件的二进制文件必须放置在 Podman 可以发现的指定目录中,这些目录在 containers.conf(5) 的 [network]
部分下的 netavark_plugin_dirs
设置中列出。
插件的名称然后可以作为驱动程序来使用,以便为您的插件创建网络。
所有支持的驱动程序和插件的列表可以通过 podman info --format {{.Plugins.Network}}
命令查看。
请注意,macvlan
和 ipvlan
驱动程序不支持端口转发。插件对端口转发的支持取决于插件的实现。
在某些应用场景中,如果您需要容器之间或者容器与外部网络之间的端口转发功能,您可能需要使用 bridge
驱动程序或其他支持端口转发的插件。端口转发允许您指定一个主机端口,并将其映射到容器内的某个端口,从而允许外部流量通过主机端口访问容器服务。
--gateway=ip
定义子网的网关。要提供网关地址,需要指定 subnet 选项。可以指定多次。 --subnet、--gateway 和 --ip-range 选项的参数顺序必须匹配。
--ignore
如果已存在具有相同名称的网络,则忽略创建请求,而不是失败。 请注意,尝试使用现有名称和不同的参数创建网络不会更改现有网络的配置。
--interface-name=name
此选项映射到网络配置中的 network_interface 选项,请参阅 podman network inspect。
根据驱动程序的不同,它可能有不同的效果;对于 bridge
,它使用桥接接口名称。
对于 macvlan
和 ipvlan
,它是主机上的父设备。它与 --opt parent=...
相同。
--internal
当使用 bridge
网络时,限制对此网络的外部访问。请注意,当使用 CNI 后端时,DNS 将自动禁用,请参阅 --disable-dns。
当使用 macvlan
或 ipvlan
驱动程序并启用此选项时,不会向容器添加默认路由。
因为它绕过了主机网络堆栈,因此 podman 无法设置额外的限制,如果运行特权容器,则它们可以自己设置默认路由。
如果这是一个问题,那么应在您的实际网络网关上阻止容器连接。
--ip-range=range
从指定范围内分配容器 IP。范围必须是一个完整的 CIDR 表示法的子网,或者采用 <startIP>-<endIP>
语法,与 CIDR 子网相比,这种语法提供了更灵活的范围。
ip-range 选项必须与 subnet 选项一起使用。可以指定多次。
--subnet、--gateway 和 --ip-range 选项的参数顺序必须匹配。
--ipam-driver=driver
设置网络的 IPAM 驱动程序(IP 地址管理驱动程序)。如果未设置,podman 会根据网络驱动程序自动选择一个 IPAM 驱动程序。
有效值包括:
dhcp
:IP 地址从网络上的 dhcp 服务器分配。当使用 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=label
为网络设置元数据(例如,--label mykey=value)。
--opt, -o=option
设置驱动程序特定的选项。
所有驱动程序都接受 mtu
、metric
、no_default_route
等选项。
mtu
:设置最大传输单元(MTU)并接受整数值。metric
:为创建的默认路由设置路由度量值,该默认路由在每个加入此网络的容器中创建。接受正整数值。仅可与 Netavark 网络后端一起使用。no_default_route
:如果设置为 1,Podman 将不会自动向子网添加默认路由。仍然可以手动创建自定义路由,使用--route
。
此外,bridge
驱动程序还支持以下选项:
vlan
:此选项分配 VLAN 标签并启用 vlan_filtering。默认为无。isolate
:此选项通过阻止具有此选项启用的网络之间的流量来隔离网络。com.docker.network.bridge.name
:此选项将给定的名称分配给创建的 Linux Bridge。com.docker.network.driver.mtu
:设置最大传输单元(MTU)并接受整数值。vrf
:此选项将 VRF 分配给桥接接口。它接受 VRF 的名称,默认为无。仅可与 Netavark 网络后端一起使用。
macvlan
和 ipvlan
驱动程序支持以下选项:
parent
:主机设备,用于 macvlan 接口。默认为默认路由接口。mode
:此选项在接口上设置指定的 ip/macvlan 模式。macvlan
支持的值有bridge
、private
、vepa
、passthru
。默认为bridge
。ipvlan
支持的值有l2
、l3
、l3s
。默认为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.133.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根据新的网络格式进行了更新。
2019年8月,最初由Brent Baude整理编写。