podman 如何创建一个和宿主机在同一个网段的ip地址容器

padman 创建容器的时候通过 –network 参数可以创建 host, bridge, none 这三类的网络类型。第一种 host 模式,和宿主机用共同的ip。 bridge 桥模式会自动创建一个虚拟网桥,对外会使用 NAT 做地址转换,和外界通信。 none 则不创建网络。

要是想创建一个容器,容器的ip和宿主机在同一个网段,可以通信可以创建   macvlan 网络

创建 macvlan

podman network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=ens33 \
  macvlan-net
# --subnet 是宿主机所在的网段
# --geteway 是宿主机的网关
# -o parent 种的 ens33 是宿主机的网卡

创建 容器,并指定ip

podman run -d --name rocky-180 \
  --network macvlan-net \
  --ip 192.168.1.180 \
  rockylinux/rockylinux:10 \
  sleep infinity
# 注意 192.168.1.180 要确保没用,创建前ping 一下。
# sleep infinity 让容器一直运行

创建测试容器 ip 是 192.168.1.181

podman run -d --name rocky-181 \
  --network macvlan-net \
  --ip 192.168.1.181 \
  rockylinux/rockylinux:10 \
  sleep infinity

结论: 可以看到创建了,两个容器,ip地址一个是 192.168.1.181 另一个是 192.168.1.180 两个是可以胡同的。

发现的现象和问题

  1. podman 创建的容器之间可以互通
  2. podman 创建的容器和宿主机不能互通
  3. podman 创建的容器可以和宿主机所在网络的其他设备通信。

结论: podman 创建的容器和宿主机不能互通

这结论只是默认的情况,应该是考虑高安全的原因,可以通过其他方便做同和宿主机的互通。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注