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

以上:对于已创建的容器,先停止容器再连接到新网络

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐