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 两个是可以胡同的。
发现的现象和问题

- podman 创建的容器之间可以互通
- podman 创建的容器和宿主机不能互通
- podman 创建的容器可以和宿主机所在网络的其他设备通信。
结论: podman 创建的容器和宿主机不能互通
这结论只是默认的情况,应该是考虑高安全的原因,可以通过其他方便做同和宿主机的互通。