假设有 podman 网络net1
和容器cont1
。我在创建容器时使用 将 podman 网络连接到容器--net net1
。还可以使用podman network disconnect/connect net1 cont1
命令断开和连接虚拟网卡net1
。每次我断开和连接网卡时,容器内的 ip 地址都会增加 1 net1
。
我尝试过但没有帮助我实现我需要的:
podman network rm net1
systemctl restart systemd-networkd
systemctl restart NetworkManager.service
nmcli nm enable false
sleep 5
nmcli nm enable true
killall NetworkManager && sudo NetworkManager
podman network create net1
对于这些尝试,我假设 NetworkManager 可能记住了以前的 IP 地址,因此在 podman nic 上使用 dhcp 分配下一个地址net1
。我尝试了上面的代码块podman network disconnect
和之间podman network connect
,以及之间(符号命令):podman stop and remove cont1
和podman create cont1 with --net net1
。这些步骤都没有帮助。
如果一次内的 ip 地址cont1
是10.89.0.2
,则下一次(在断开/连接 net1 到 cont1 之后或移除 cont1 + 创建 cont1 + 将 cont1 连接到 net1 之后)将是10.89.0.3
。我需要它保持在10.89.0.2
。
系统规格:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
podman version 3.4.2
我正在使用sudo
所有这些命令,包括podman
。
答案1
我相信您每次都试图为容器分配相同的 IP。简而言之,您希望容器具有静态 IP。
然后你必须用参数启动你的容器
创建我自己的网络
podman network create --subnet=172.18.0.0/16 mydockernetwork
--ip
使用静态 IP参数启动容器
podman run --net mydockernetwork --ip 172.18.0.4 -it --name ubuntu_static_ip ubuntu
让我们找出 IP 地址
[bob@centos-host ~]$ podman inspect c88945483ee4 | grep -i IPAddress
"IPAddress": "",
"IPAddress": "172.18.0.4",
停止容器
[bob@centos-host ~]$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c88945483ee4 docker.io/library/ubuntu:latest sh -c sleep 1d About a minute ago Up About a minute ago ubuntu_static_ip2
[bob@centos-host ~]$ podman stop c88945483ee4
c88945483ee4
[bob@centos-host ~]$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
现在重新开始
[bob@centos-host ~]$ podman start c88945483ee4
c88945483ee4
[bob@centos-host ~]$ podman inspect c88945483ee4 | grep -i IPAddress
"IPAddress": "",
"IPAddress": "172.18.0.4",
[bob@centos-host ~]$
如您所见,IP 地址没有改变。希望对您有所帮助。
参考:http://thelinuxmen.blogspot.com/2021/08/docker-networking-basisc-configure.html了解更多信息。