名称¶
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¶
管理网络的驱动程序。目前支持 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
驱动程序不支持端口转发。插件是否支持端口转发取决于插件的实现。
--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 无法设置额外的限制,如果运行特权容器,它可以自行设置默认路由。如果这是一个问题,则应在实际网络网关上阻止容器连接。
使用 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¶
设置驱动程序特定选项。
所有驱动程序都接受 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 网桥分配给定名称。com.docker.network.driver.mtu
:设置最大传输单元(MTU),并接受整数值。vrf
:此选项为网桥接口分配 VRF。它接受 VRF 的名称,默认为无。只能与 Netavark 网络后端一起使用。mode
:此选项在接口上设置指定的网桥模式。默认为managed
。支持的值managed
:Podman 创建和删除网桥并更改其 sysctl。它添加防火墙规则以伪装传出流量,并使用 DNAT 设置传入流量的端口转发。unmanaged
:Podman 使用现有网桥。它必须在您要启动使用该网络的容器时存在。即使在创建容器时传递了此类选项,也不会进行 NAT 或端口转发。
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.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 汇编