docker使用指定的MAC地址启动podman使用指定的MAC地址启动
docker指定固定的mac地址
1】创建自定义桥接网络并配置 MAC 地址保留
docker network create --driver bridge custom_bridge
2】启动容器并指定使用自定义网络
docker run -it --name your-container --network custom_bridge --mac-address 02:42:ac:11:00:02 your-image
--mac-address
:直接设置容器的 MAC 地址(需符合格式,用 : 分隔)。
--network custom_bridge
:指定容器使用名为custom_bridge的自定义网络。
3】查看docker已创建的网络
1、使用docker network ls
命令
docekr network ls --filter driver=bridge
该命令用于列出 Docker 中所有的网络,通过过滤可以找到桥接类型的网络。
--filter driver=bridge
是过滤条件,用于只显示驱动类型为 bridge(桥接)的网络。执行后,会得到类似如下的输出结果:NETWORK ID NAME DRIVER SCOPE 767c81710959 bridge bridge local 115417c815d2 custom_bridge bridge local
NAME
列显示了桥接网络的名称。
2、使用docker network inspect
命令查看桥接网络信息
docker network inspect custom_bridge
以上命令式查看名为
custom_bridge
的桥接网络详细信息
输出结果会包含该桥接网络的 IP 地址池、网关、DNS 设置等详细配置信息,示例如下:[{"Name": "custom_bridge","Id": "115417c815d2f87c9a87578912e1a815417c815d2f87c9a87578912e1a8","Created": "2024-01-01T12:00:00.000000000Z","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "172.18.0.0/16","Gateway": "172.18.0.1"}]},// 省略其他配置信息} ]
4】修改docker已创建的网络
1、删除原有网络:docker network rm
```bash
docker network rm custom_birdge
```
>以上命令删除要修改的桥接网络,如:删除名为`custom_bridge`的桥接网络
2、重新创建网络并设置新配置:docker network create
```bash
docker network create \ --driver bridge \--subnet 192.168.20.0/24 \--gatawey 192.168.20.1 \ custom_bridge
```
> 使用`docker network create`命令按照新的要求创建桥接网络,比如:设置子网`192.168.20.0/24`,网关设置为`192.168.20.1`等配置
3、重新连接容器:docker network connect
```bash
docker network connect custom_bridge your_container
```
> 如果之前有容器连接到这个网络,需要重新将容器连接到新创建的网络,比如:将`custom_bridge ` 桥接网络与`your_container`容器连接
podman指定固定的mac地址
1】创建 Podman 自定义网络(桥接模式)
podman network create custom_bridge
2】启动容器指定网桥并且固定mac地址
docker run -it --name your-container --network custom_bridge--mac-address 02:42:ac:11:00:02 your-image
--mac-address
:直接设置容器的 MAC 地址(需符合格式,用 : 分隔)。
--network custom_bridge
:关联到自定义网络,确保容器在该网络内固定 MAC。
3】查看podman已创建的网络
1、使用podman network list
命令
podman network list --filter driver=bridge
该命令用于列出podman中所有的网络,通过过滤可以找到桥接类型的网络
--filter driver=bridge
是过滤条件,只显示驱动类型为bridge
的网络。执行后,会得到类似如下的输出结果:NAME TYPE DRIVER SCOPE bridge bridge bridge local my_custom_bridge bridge bridge local
NAME
列显示了桥接网络的名称
2、使用podman network inspect
命令
podman network inspect custom_bridge
该命令用于查看指定网络的详细信息,结合
podman network list
获取网络名称,就可以查看桥接网络的具体配置。
比如以上命令,要查看名为custom_bridge
的桥接网络的详细信息:
输出结果包含桥接网络的子网、网关等配置信息,示例如下:[{"cniVersion": "0.4.0","name": "my_custom_bridge","plugins": [{"bridge": "cni-podman0","hairpinMode": true,"ipMasq": true,"ipam": {"ranges": [[{"subnet": "10.88.0.0/16","gateway": "10.88.0.1"}]],"routes": [{"dst": "0.0.0.0/0"}],"type": "host-local"},"isGateway": true,"type": "bridge"},// 省略其他配置信息]} ]
4】修改podman已创建的网络
方式1: 修改网络配置文件
1、找到对应的CNI配置文件【Linux系统】
```bash
ls /etc/cni/net.d/
```
> podman的CNI配置通常在 `/etc/cni/net.d/`目录下,文件名与桥接网络名称相关。
> 比如桥接网络名为custom_bridge,则对应的配置文件可能是`custom_bridge.conflist`
2、编辑配置文件
> 根绝要求修改配置,比如更改子网、网关等配置
3、重新加载网络配置!!!必要时也要重启涉及到的容器去重新加载最新网络配置
方式2:删除再重建的方式修改网络
1、断开容器与目标网络的链接(可选):podman network disconnect
```bash
# 断开容器与网络的关联(容器需处于运行或停止状态)
podman network disconnect custom_bridge your_container
```
> 以上命令断开 桥接网络`custom_bridge ` 与 容器`your_container`的链接> 如果容器已停止,可以跳过此步骤,直接删除网络(但是建议先断开,避免依赖残留)
2、删除原有桥接网络:podman network rm
```java
podman network rm custom_bridge
```
> 比如删除名为`custom_bridge`的桥接网络> 如果删除失败了(提示网络被使用),可以强制停止并删除关联容器后重试
> ```bash
> # 强制停止容器
>podman stop -f 容器名称或ID
># 删除容器(可选,若需保留容器则无需此步)
>podman rm 容器名称或ID
># 再次删除网络
>podman network rm 网络名称
>```
3、重新创建桥接网络
```bash
podman network create \--driver birdge--subnet 172.20.0.0/24 \--gatawey 172.20.0.1 \custom_bridge
```
> 重新创建`custom_bridge`并设置子网为`172.20.0.0/24`和网关为`172.20.0.1`
4、将容器关联到新网络
情况1:未创建的容器
podman run -d \--name your_container \--network custom_bridge \ # 关联到新创建的网络--mac-address 02:42:ac:11:00:03 \ # 可选:指定固定MAC地址your_image
以上:对于未创建的容器,启动时可以直接指定新的网络
情况2:对于已启动的容器
# 停止容器
podman stop your_container# 重新连接到新网络
podman network connect custom_birdge your_conainer# 重新启动容器
podman start your_container
以上:对于已创建的容器,先停止容器再连接到新网络