docker network 自定義網絡配置與管理指南詳細過程
Docker 自定義網絡配置與管理指南
1. 網絡基礎概念
Docker 網絡是容器間通信和與外部世界交互的基礎。通過自定義網絡,可以實現容器間的隔離、靜態(tài) IP 分配和服務發(fā)現。
關鍵術語:
- 子網(Subnet):IP 地址的邏輯分組,例如 172.18.0.0/16 包含 65,536 個 IP 地址
- 網關(Gateway):子網的默認路由,通常是子網的第一個或最后一個 IP
- CIDR 表示法:IP/前綴長度,如 172.18.0.1/16 表示前 16 位為網絡位
- 橋接網絡(Bridge):Docker 默認的網絡驅動,用于容器間通信
2. 創(chuàng)建自定義網絡
創(chuàng)建名為 net_base
的橋接網絡,指定特定的子網和網關:
docker network create \ --driver bridge \ # 使用橋接網絡驅動(默認) --subnet 172.18.0.0/16 \ # 指定 IP 地址范圍 --gateway 172.18.0.254 \ # 手動指定網關 IP(子網內的最后一個可用 IP) net_base # 網絡名稱
參數說明:
--driver bridge
:創(chuàng)建基于 Linux 橋接的網絡--subnet
:定義網絡的 IP 地址范圍--gateway
:設置網關 IP(必須在子網范圍內)
3. 啟動容器并分配靜態(tài) IP
在自定義網絡中啟動容器并分配靜態(tài) IP:
docker run -d \ --name mysql-8.0.39 \ # 容器名稱 --network net_base \ # 連接到自定義網絡 --ip 172.18.0.1 \ # 指定靜態(tài) IP 地址(網關為 0.254,因此 0.1 可用) -p 3306:3306 \ # 端口映射 -e MYSQL_ROOT_PASSWORD=XXXXXX \ # 環(huán)境變量設置 -v /etc/localtime:/etc/localtime:ro \ # 時區(qū)同步 -v /volume/mysql_8.0.39/data:/var/lib/mysql \ # 數據持久化 mysql:8.0.39 # 鏡像名稱
注意事項:
- 靜態(tài) IP 必須在子網范圍內且未被使用
- 網關已設置為
172.18.0.254
,因此0.1
可安全分配給容器 - 靜態(tài) IP 需要在創(chuàng)建容器時指定,無法在運行時修改
4. 網絡管理常用命令
查看網絡列表:
docker network ls
查看網絡詳細信息:
docker network inspect net_base
連接現有容器到網絡:
docker network connect net_base <容器名或ID>
斷開容器與網絡的連接:
docker network disconnect net_base <容器名或ID>
刪除自定義網絡(需先斷開所有容器):
docker network rm net_base
5. 驗證網絡配置
檢查容器 IP 地址:
docker inspect -f '{{.NetworkSettings.Networks.net_base.IPAddress}}' mysql-8.0.39
從容器內部測試網絡連通性:
# 測試網關連通性 docker exec -it mysql-8.0.39 ping 172.18.0.254 # 測試其他容器連通性(如果有) docker exec -it mysql-8.0.39 ping 172.18.0.3
查看容器網絡配置:
docker exec -it mysql-8.0.39 ip addr show eth0
6. 網絡配置最佳實踐
- 為不同環(huán)境創(chuàng)建獨立網絡:開發(fā)、測試、生產環(huán)境使用不同網絡
- 合理規(guī)劃 IP 地址:為每個服務預留足夠的 IP 地址空間
- 避免網關 IP 沖突:手動指定網關時,確保與容器 IP 無重疊
- 使用網絡別名簡化通信:
docker run -d --name web --network net_base --network-alias www nginx
其他容器可通過 www
域名訪問該容器
使用 Docker Compose 管理復雜網絡:
version: '3' networks: net_base: driver: bridge ipam: config: - subnet: 172.18.0.0/16 gateway: 172.18.0.254 services: mysql: image: mysql:8.0.39 networks: net_base: ipv4_address: 172.18.0.1
7. 故障排查
容器無法訪問外網:
- 檢查網關 IP 是否正確配置
- 確認宿主機防火墻允許容器網絡流量
容器間無法通信:
- 檢查容器是否連接到同一網絡
- 確認 IP 地址分配無沖突
- 使用
docker network inspect
檢查網絡配置
靜態(tài) IP 分配失敗:
- 確保指定的 IP 在子網范圍內
- 使用
docker network inspect
查看已分配的 IP
通過合理使用自定義網絡和靜態(tài) IP 分配,可以構建出結構清晰、易于管理的容器網絡環(huán)境。
到此這篇關于docker network 自定義網絡配置與管理指南的文章就介紹到這了,更多相關docker network 自定義網絡配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Docker?安裝Tomcat、實現Tomcat集群的詳細過程
這篇文章主要介紹了Docker安裝Tomcat、實現Tomcat集群,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06淺析docker-compose部署mysql無法訪問的問題
Compose 是 Docker 容器進行編排的工具,定義和運行多容器的應用,可以一條命令啟動多個容器,使用Docker Compose不再需要使用shell腳本來啟動容器。接下來通過本文給大家分享docker-compose部署mysql無法訪問的問題,需要的朋友參考下吧2018-10-10