在 Podman 中,通过 podman network create 命令创建自定义网络。
创建自定义网络是 Podman 网络管理中的重要操作,它允许你为不同的应用或环境配置独立的网络环境,实现更精细的网络隔离和控制。
podman network create 语法如下:
podman network create [OPTIONS] NETWORK_NAME
常用选项:
--driver/-d 指定网络驱动类型(默认 bridge),例如:podman network create -d macvlan my_macvlan
--subnet 指定 IPv4/IPv6 子网段(CIDR 格式),例如:--subnet 192.168.50.0/24
--gateway 指定子网的网关地址,例如:--gateway 192.168.50.1
--ip-range 指定分配给容器的 IP 范围,例如:--ip-range 192.168.50.100/28
--ipv6 启用 IPv6 支持(需配合 IPv6 子网),例如:--ipv6 --subnet fd00:1::/64
--dns 设置容器使用的 DNS 服务器(可多次使用),例如:--dns 8.8.8.8 --dns 1.1.1.1
--internal 创建内部网络(容器间互通但无法访问外网),例如:--internal
--disable-dns 禁用网络的 DNS 解析功能,例如:--disable-dns
--opt / -o 指定驱动特定的选项,例如:--opt parent=eth0(macvlan)
--label 为网络添加元数据标签,例如:--label env=prod --label app=web
点击查看 podman network create 命令手册。
Podman 支持多种网络驱动类型,每种类型适用于不同的网络场景和需求。以下是主要的网络驱动类型及其说明:
bridge(桥接驱动)是 Podman 创建网络时的默认驱动类型。它会在主机上创建一个虚拟网桥(默认名为 podman0),所有接入该网络的容器均通过此网桥实现相互通信,同时可借助 NAT 机制访问外部网络。该驱动适用于单机环境下的容器间通信场景,是日常使用中最普遍的网络模式。
C:\Users\Administrator> podman network inspect podman
[
{
"name": "podman",
"id": "2f259bab93aaaaa2542ba43ef33eb990d0999ee1b9924b557b7be53c0b7a1bb9",
"driver": "bridge",
"network_interface": "podman0",
"created": "2025-11-20T11:08:30.271515023+08:00",
"subnets": [
{
"subnet": "10.88.0.0/16",
"gateway": "10.88.0.1"
}
],
"ipv6_enabled": false,
"internal": false,
"dns_enabled": false,
"ipam_options": {
"driver": "host-local"
},
"containers": {}
}
]上面输出中,network_interface 值为 podman0。
macvlan(MACVLAN 驱动)会为容器分配与主机网卡同网段的独立 MAC 地址和 IP 地址,让容器在网络中呈现为一台独立的物理设备。该驱动适用于需要将容器直接暴露在物理网络,或需与物理网络内其他设备(如服务器、IoT 设备等)直接进行网络通信的场景。
ipvlan(IPVLAN 驱动)与 MACVLAN 驱动功能相近,但容器会共享主机网卡的 MAC 地址,仅分配独立的 IP 地址,资源占用更轻量化。该驱动适用于 MAC 地址资源存在限制,或需让大量容器接入同一物理网络的场景。
overlay(覆盖网络驱动)用于跨主机的容器通信,通过封装技术(如 VXLAN)在多台主机间构建虚拟网络。该驱动适用于多主机集群环境(如 Podman 集群或与 Kubernetes 集成),以及需要实现跨主机容器通信的场景。
null(空驱动)会创建一个无网络功能的网络,容器接入后将完全切断与外界的通信(包括主机及其他容器)。该驱动适用于需要网络完全隔离的容器,或仅运行无需网络的后台任务的容器场景。
host(主机驱动)让容器直接使用主机的网络命名空间,与主机共享完整的网络栈(包括 IP 地址、端口等资源)。该驱动适用于需要容器直接使用主机网络端口,或对网络性能要求极高的场景(但会丧失网络隔离性)。
slirp4netns(用户态网络驱动)是一种轻量级的用户态网络实现,通过 slirp4netns 工具为容器提供网络连接,且无需 root 权限。该驱动专为无根模式(rootless)下的 Podman 容器设计,能同时保证容器的网络安全性与隔离性。
remote(远程驱动)用于连接远程网络管理插件(如 CNI 插件),以此扩展 Podman 的网络功能边界。该驱动适用于需集成第三方网络解决方案(如 Calico、Flannel)的场景。
(1)创建一个生产环境用的自定义网络
podman network create --subnet 172.18.0.0/16 --gateway 172.18.0.1 --ip-range 172.18.100.0/24 --dns 172.18.0.10 --label environment=production prod_network # 示例 C:\Users\Administrator> podman network create --subnet 172.18.0.0/16 --gateway 172.18.0.1 --ip-range 172.18.100.0/24 --dns 172.18.0.10 --label environment=production prod_network prod_network C:\Users\Administrator> podman network ls NETWORK ID NAME DRIVER 2f259bab93aa podman bridge 0fde7b9feb9d prod_network bridge 3c7202f56853 springcloud-network bridge
上面命令用于创建一个名为 prod_network 的自定义桥接网络,专为生产环境配置,包含指定的子网、网关、IP 分配范围、DNS 服务器和环境标签。
其中:
--subnet 172.18.0.0/16 指定网络的整体子网段为 172.18.0.0/16,意味着该网络可分配的 IP 地址范围是 172.18.0.1 到 172.18.255.254。
--gateway 172.18.0.1 设置该网络的网关地址为 172.18.0.1,容器将通过此网关访问外部网络或其他子网。
--ip-range 172.18.100.0/24 限定容器可分配的 IP 地址范围为 172.18.100.0/24(即 172.18.100.1 到 172.18.100.254),避免占用子网内其他 IP 段资源。
--dns 172.18.0.10 指定该网络内容器使用的 DNS 服务器地址为 172.18.0.10,确保容器能正常解析域名。
--label environment=production 为网络添加元数据标签 environment=production,用于标识网络用途(生产环境),方便管理和筛选。
prod_network 定义网络的名称为 prod_network,后续可通过该名称引用此网络。
更多信息请参考官方文档。