Podman 教程

Podman 容器连接 / 断开网络

在 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-nginx

断开网络

podman 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[]

更多信息,请参考官方文档。

  

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号