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