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
以上:對于已創建的容器,先停止容器再連接到新網絡