Podman 网络管理介绍
概述
Podman 是一个开源的容器运行时,允许用户在没有守护进程的情况下运行容器。其中,网络管理是 Podman 的一项关键功能,允许用户创建、查看、删除和管理容器网络。
Podman 支持多种网络后端,其中最常用的是 Netavark 和 CNI(容器网络接口)。Netavark 是 Podman 的默认网络后端,它提供了简单且高效的容器网络管理。而 CNI 则是一个更通用的容器网络解决方案,但它在 Podman 中的使用已逐渐被 Netavark 所取代。
在 Podman 中,网络的管理主要通过 podman network
命令完成。该命令提供了多个子命令,用于执行不同的网络操作。
命令
命令 | 手册页 | 描述 |
---|---|---|
connect | podman-network-connect(1) | 将容器连接到网络 |
create | podman-network-create(1) | 创建一个 Podman 网络 |
disconnect | podman-network-disconnect(1) | 将容器从网络中断开连接 |
exists | podman-network-exists(1) | 检查给定的网络是否存在 |
inspect | podman-network-inspect(1) | 显示一个或多个网络的配置信息 |
ls | podman-network-ls(1) | 显示网络的摘要 |
prune | podman-network-prune(1) | 删除所有未使用的网络 |
reload | podman-network-reload(1) | 重新加载容器的网络配置 |
rm | podman-network-rm(1) | 删除一个或多个网络 |
update | podman-network-update(1) | 更新已存在的 Podman 网络 |
这些命令用于通过 Podman 管理容器网络。Podman 是一个开源的容器引擎,用于在主机上管理容器。这些网络命令允许用户创建、连接、断开、检查、列出、清理、重新加载、删除和更新网络。每个命令都有其特定的用途,用户可以根据需要选择相应的命令来执行网络管理任务。
Podman 网络
默认的桥接网络(名为 podman
)使用 10.88.0.0/16 作为子网。当 Podman 以 root 用户身份运行时,podman
网络被用作默认网络。这等同于添加 --network bridge
或 --network podman
选项。这个子网可以在 containers.conf(5) 文件的 [network]
部分中更改。将 default_subnet
设置为环境中可用的任何子网。默认网络的名称也可以从 podman
更改为其他名称,使用 default_network 键来更改。请注意,这仅在没有任何容器运行时才执行。
Slirp4netns
当 Podman 以非 root 用户身份运行时,它默认使用 slirp4netns 提供互联网连接。Slirp4netns 使用 10.0.2.0/24 作为其默认网络。这也可以在 containers.conf(5) 文件中更改,但需要在 [engine]
部分进行。使用 network_cmd_options
键,并添加 ["cidr=X.X.X.X/24"]
作为值。请注意,slirp4netns 需要网络前缀大小在 1 到 25 之间。此选项接受一个数组,因此可以像 podman-network-create(1) 手册页中描述的那样,在逗号分隔的字符串中添加更多选项。如果要为单个容器更改 CIDR,请在命令行上使用 --network
选项指定它,如下所示:--network slirp4netns:cidr=192.168.1.0/24
。
当以非 root 用户身份使用默认网络(即 --network podman/bridge
)时,它还会使用上面描述的相同子网,以及 slirp4netns 子网。
子命令
podman network create
用于创建新的容器网络。用户可以指定网络的名称、子网、网关等参数。例如:
podman network create --subnet 172.18.0.0/16 mynetwork
这条命令将创建一个名为 mynetwork
的新网络,并指定其子网为 172.18.0.0/16
。
podman network list
用于列出所有已创建的容器网络。用户可以查看网络的名称、ID、子网等详细信息。例如:
podman network list
podman network inspect
用于查看指定网络的详细信息。用户可以获取网络的配置、连接的容器等信息。例如:
podman network inspect mynetwork
这条命令将显示 mynetwork
网络的详细信息。
podman network remove
用于删除指定的容器网络。在删除网络之前,需要确保没有容器正在使用该网络。例如:
podman network remove mynetwork
这条命令将删除名为 mynetwork
的网络。
podman network connect
用于将容器连接到指定的网络。这允许容器与其他容器或主机进行通信。例如:
podman network connect mynetwork mycontainer
这条命令将 mycontainer
容器连接到 mynetwork
网络。
podman network disconnect
用于将容器从指定的网络中断开连接。断开连接后,容器将无法再与该网络中的其他容器或主机进行通信。例如:
podman network disconnect mynetwork mycontainer
这条命令将从 mynetwork
网络中断开 mycontainer
容器的连接。
注意事项
- 在使用 Podman 进行网络管理时,需要确保主机上已正确安装和配置了网络后端(如 Netavark 或 CNI)。
- 在创建网络时,可以根据需要指定不同的子网、网关等参数,以满足特定的网络需求。
- 在删除网络之前,务必确保没有容器正在使用该网络,否则可能会导致数据丢失或容器无法正常工作。
参阅
- Podman 官方文档:包含 Podman 的详细使用说明和配置选项。
- Netavark 文档:了解 Netavark 网络后端的更多信息和配置方法。
- CNI 文档:了解 CNI(容器网络接口)的详细信息和规范。