在 Podman 中,可以使用 podman network connect 和 podman network disconnect 命令用于在容器运行时动态地将其连接到指定网络或从网络中断开,实现灵活的网络拓扑管理。
podman network connect 命令用于将运行中的容器动态连接到指定的网络,支持在不重启容器的前提下为容器扩展网络访问能力,实现灵活的网络拓扑管理。
语法格式如下:
podman network connect [OPTIONS] NETWORK_NAME|NETWORK_ID CONTAINER_NAME|CONTAINER_ID
常用选项:
--alias strings 为容器在目标网络内设置 DNS 别名(可指定多个),其他容器可通过别名访问。例如:--alias app1 --alias backend
--ip ip 指定容器在目标网络中的静态 IPv4 地址(需在网络子网范围内),例如:--ip 172.18.100.10
--ip6 ip 指定容器在目标网络中的静态 IPv6 地址,例如:--ip6 2001:db8::10
--mac-address string 设置容器在目标网络中的静态 MAC 地址,例如:--mac-address 02:42:ac:12:00:0a
点击查看 podman network connect 命令手册。
(1)将容器 my-nginx 连接到自定义网络 test:
podman network connect test my-nginx
# 示例
# 查看运行中的容器
C:\Users\Administrator> podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f0da597805fb docker.io/library/nginx:latest nginx -g daemon o... 19 minutes ago Up 19 minutes 0.0.0.0:8080->80/tcp my-nginx
4593cea5afe3 docker.io/library/redis:latest redis-server 18 minutes ago Up 18 minutes 0.0.0.0:6379->6379/tcp my-redis
# 创建 test 网络
C:\Users\Administrator> podman network create test
test
# 将 my-nginx 容器连接到 test 网络
C:\Users\Administrator> podman network connect test my-nginx
# 查看 my-nginx 网络情况
C:\Users\Administrator> podman inspect -f "{{.NetworkSettings.Networks}}" my-nginx
map[test:0xc000300900](2)为容器在目标网络中分配固定 IP,例如:
# 将已运行的容器 my-nginx 动态连接到 test 网络
# 并为其在该网络中分配静态 IPv4 地址 10.89.1.120
podman network connect --ip 10.89.1.120 test my-nginx
# 示例
# 查看运行中的容器
C:\Users\Administrator> podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f0da597805fb docker.io/library/nginx:latest nginx -g daemon o... 23 minutes ago Up 23 minutes 0.0.0.0:8080->80/tcp my-nginx
4593cea5afe3 docker.io/library/redis:latest redis-server 22 minutes ago Up 22 minutes 0.0.0.0:6379->6379/tcp my-redis
# 将 my-nginx 容器连接到 test 网络
# 错误:因为IP地址错误
C:\Users\Administrator> podman network connect --ip 172.18.100.5 test my-nginx
Error: requested static ip 172.18.100.5 not in any subnet on network test
# 查看 test 网络的详情
C:\Users\Administrator> podman network inspect test
[
{
"name": "test",
"id": "f718f9e378a1be5dd7933b0076250faad257bcf6c82ff71f71a40d52cf6bf288",
"driver": "bridge",
"network_interface": "podman3",
"created": "2025-11-20T17:15:10.563606263+08:00",
"subnets": [
{
"subnet": "10.89.1.0/24",
"gateway": "10.89.1.1"
}
],
"ipv6_enabled": false,
"internal": false,
"dns_enabled": true,
"ipam_options": {
"driver": "host-local"
},
"containers": {}
}
]
# 将 my-nginx 容器连接到 test 网络
C:\Users\Administrator> podman network connect --ip 10.89.1.120 test my-nginxpodman network disconnect 命令用于将容器从指定网络中断开连接,支持在不停止容器的前提下移除其网络接口,实现网络拓扑的动态调整。
下面是 podman network disconnect 命令格式:
podman network disconnect [选项] 网络名称/ID 容器名称/ID
该命令仅有一个选项:
-f, --force 强制将容器从网络中移除,忽略容器当前的网络状态(如连接异常),常用于常规断开失败时,或需要强制隔离容器网络。
点击查看 podman network disconnect 命令手册。
(1)将容器 my-nginx 从网络 test 中断开:
# 将容器 my-nginx 从名为 test 的网络中断开连接
# 移除该容器在 test 网络中的网络接口和相关配置
podman network disconnect test my-nginx
# 示例
# 查看 my-nginx 容器连接的网络
C:\Users\Administrator> podman inspect -f "{{.NetworkSettings.Networks}}" my-nginx
map[test:0xc0001f4d80]
# 将容器 my-nginx 从名为 test 的网络中断开连接
C:\Users\Administrator> podman network disconnect test my-nginx
# 查看 my-nginx 容器连接的网络
# 根据输出可知,test 网络已经被移除
C:\Users\Administrator> podman inspect -f "{{.NetworkSettings.Networks}}" my-nginx
map[](2)当常规断开失败(如容器网络状态异常)时,使用强制选项:
# 强制将容器 my-nginx 从名为 test 的网络中断开连接
# 即使容器存在网络状态异常或依赖问题,也能强制执行断开操作
podman network disconnect -f test my-nginx
# 示例
C:\Users\Administrator> podman inspect -f "{{.NetworkSettings.Networks}}" my-nginx
map[test:0xc0003cdb00]
# 强制断开
C:\Users\Administrator> podman network disconnect -f test my-nginx
C:\Users\Administrator> podman inspect -f "{{.NetworkSettings.Networks}}" my-nginx
map[]更多信息,请参考官方文档。