Docker如何自定義網(wǎng)絡(luò)實(shí)現(xiàn)容器互通
一、自定義網(wǎng)絡(luò)核心優(yōu)勢(shì)
與傳統(tǒng)–link對(duì)比
| 能力 | 默認(rèn)bridge±-link | 自定義網(wǎng)絡(luò) |
|---|---|---|
| 自動(dòng)DNS解析 | 僅單向鏈接有效 | 全網(wǎng)絡(luò)自動(dòng)雙向解析 |
| 服務(wù)發(fā)現(xiàn) | 需手動(dòng)維護(hù)鏈接 | 動(dòng)態(tài)更新容器IP映射 |
| 網(wǎng)絡(luò)隔離 | 共享默認(rèn)bridge | 獨(dú)立子網(wǎng)隔離 |
| 連接方式 | 僅允許已鏈接容器通信 | 網(wǎng)絡(luò)內(nèi)自由通信 |
二、網(wǎng)絡(luò)創(chuàng)建與配置
2.1 創(chuàng)建自定義網(wǎng)絡(luò)
# 創(chuàng)建帶自定義參數(shù)的bridge網(wǎng)絡(luò) docker network create \ --driver=bridge \ --subnet=172.28.0.0/16 \ --gateway=172.28.0.1 \ --ipv6 --subnet=2001:db8:abc::/48 \ --label env=prod \ app-network # 驗(yàn)證網(wǎng)絡(luò)配置 docker network inspect app-network
2.2 網(wǎng)絡(luò)參數(shù)詳解
| 參數(shù) | 示例值 | 作用說(shuō)明 |
|---|---|---|
| –driver | bridge/overlay/macvlan | 指定網(wǎng)絡(luò)驅(qū)動(dòng)類型 |
| –subnet | 172.28.0.0/16 | 定義IPv4子網(wǎng) |
| –gateway | 172.28.0.1 | 設(shè)置默認(rèn)網(wǎng)關(guān) |
| –ip-range | 172.28.5.0/24 | 限制IP分配范圍 |
| –aux-address | host1=172.28.1.5 | 保留指定IP避免分配沖突 |
三、容器連接與通信驗(yàn)證
3.1 部署多容器服務(wù)
# 運(yùn)行數(shù)據(jù)庫(kù)容器 docker run -d \ --name mysql-db \ --network app-network \ -e MYSQL_ROOT_PASSWORD=secret \ mysql:8.0 # 運(yùn)行應(yīng)用容器 docker run -d \ --name webapp \ --network app-network \ -p 8080:8080 \ -e DB_HOST=mysql-db \ my-webapp:latest
3.2 通信驗(yàn)證方法
# 進(jìn)入應(yīng)用容器測(cè)試連接 docker exec -it webapp ping mysql-db # 查看DNS解析記錄 docker exec webapp cat /etc/resolv.conf # 網(wǎng)絡(luò)連通性測(cè)試 docker exec webapp nc -zv mysql-db 3306
四、高級(jí)網(wǎng)絡(luò)策略
4.1 容器別名機(jī)制
# 為容器添加別名 docker run -d \ --name legacy-app \ --network app-network \ --network-alias old-system \ legacy-app:v2 # 使用別名訪問(wèn) docker exec webapp curl http://old-system:8000
4.2 網(wǎng)絡(luò)安全配置
# 創(chuàng)建隔離網(wǎng)絡(luò) docker network create \ --internal \ --ipam-opt com.docker.network.bridge.enable_icc=false \ secure-network # 容器間訪問(wèn)控制 docker network connect --alias db --ip 172.29.0.101 app-network mysql-db
五、多網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)
5.1 分層網(wǎng)絡(luò)模型
# 前端網(wǎng)絡(luò) docker network create frontend-net --subnet=10.10.0.0/24 # 后端網(wǎng)絡(luò) docker network create backend-net --subnet=10.20.0.0/24 # 數(shù)據(jù)庫(kù)網(wǎng)絡(luò) docker network create database-net --subnet=10.30.0.0/24
5.2 容器多網(wǎng)卡配置
# 連接多個(gè)網(wǎng)絡(luò) docker network connect frontend-net webapp docker network connect backend-net webapp # 查看網(wǎng)絡(luò)接口 docker exec webapp ip addr show
六、生產(chǎn)環(huán)境最佳實(shí)踐
6.1 網(wǎng)絡(luò)規(guī)劃建議
| 網(wǎng)絡(luò)類型 | IP段分配 | 連接服務(wù) |
|---|---|---|
| 前端流量網(wǎng)絡(luò) | 172.18.0.0/20 | Nginx、HAProxy |
| 業(yè)務(wù)服務(wù)網(wǎng)絡(luò) | 192.168.16.0/20 | Spring Boot、Node.js應(yīng)用 |
| 數(shù)據(jù)存儲(chǔ)網(wǎng)絡(luò) | 10.8.0.0/16 | MySQL、Redis、Elasticsearch |
| 管理網(wǎng)絡(luò) | 10.255.0.0/24 | Prometheus、Consul |
6.2 網(wǎng)絡(luò)監(jiān)控方案
# 實(shí)時(shí)監(jiān)控容器網(wǎng)絡(luò)流量 docker run -it --rm --net=host nicolaka/netshoot \ nload -t 1000 -i 1024 -o 1024 eth0 ???????# 抓包分析容器通信 docker run --cap-add=NET_ADMIN --net=container:webapp \ nicolaka/netshoot tcpdump -i eth0 port 3306 -vv
七、常見(jiàn)問(wèn)題排查指南
7.1 網(wǎng)絡(luò)連接故障樹

7.2 典型錯(cuò)誤解決
問(wèn)題:ping: bad address 'mysql-db'
排查步驟:
確認(rèn)容器處于同一網(wǎng)絡(luò)
docker inspect webapp | grep NetworkMode
檢查容器DNS配置
docker exec webapp cat /etc/resolv.conf
手動(dòng)解析測(cè)試
docker exec webapp nslookup mysql-db
以上就是Docker如何自定義網(wǎng)絡(luò)實(shí)現(xiàn)容器互通的詳細(xì)內(nèi)容,更多關(guān)于Docker網(wǎng)絡(luò)容器互通的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Docker Base Image自己創(chuàng)建具體實(shí)現(xiàn)
這篇文章主要介紹了Docker Base Image創(chuàng)建具體實(shí)現(xiàn)的相關(guān)資料,這里提供了詳細(xì)的具體步驟,需要的朋友可以參考下2016-11-11
Docker安裝ElasticSearch及掛載目錄實(shí)現(xiàn)過(guò)程
文章總結(jié)了如何部署和配置Elasticsearch和Kibana,包括拉取鏡像、安裝臨時(shí)容器、拷貝文件、創(chuàng)建正式容器、設(shè)置內(nèi)存和跨域訪問(wèn)等步驟2025-11-11
Dockerfile中ENTRYPOINT 和 CMD的區(qū)別說(shuō)明
這篇文章主要介紹了Dockerfile中ENTRYPOINT 和 CMD的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
Docker 部署 Elasticsearch 9 的搭建過(guò)程
本文詳解Elasticsearch 9.x在Linux上通過(guò)Docker部署流程,涵蓋新特性如Lucene10優(yōu)化、BBQ提升向量搜索、EDOT支持多云監(jiān)控等,并指導(dǎo)配置安全認(rèn)證與訪問(wèn)權(quán)限,感興趣的朋友跟隨小編一起看看吧2025-06-06
docker安裝kong網(wǎng)關(guān)的方法示例
這篇文章主要介紹了docker安裝kong網(wǎng)關(guān)的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
windows系統(tǒng)下如何修改docker的鏡像存儲(chǔ)地址
對(duì)于希望調(diào)整Docker鏡像存儲(chǔ)位置的用戶,在Windows環(huán)境下可以編輯特定配置文件實(shí)現(xiàn)這一需求,這篇文章主要介紹了windows系統(tǒng)下如何修改docker的鏡像存儲(chǔ)地址的相關(guān)資料,需要的朋友可以參考下2025-03-03
Dockerfile的使用及docker部署java項(xiàng)目實(shí)踐
Docker通過(guò)Dockerfile構(gòu)建自定義鏡像,簡(jiǎn)化部署流程,主要指令包括FROM、RUN、CMD、ENTRYPOINT、ENV、ADD、COPY、VOLUME、WORKDIR和USER,構(gòu)建Java環(huán)境需準(zhǔn)備目錄、Dockerfile、JDK和jar文件,執(zhí)行構(gòu)建命令并驗(yàn)證部署2026-03-03
Docker Compose環(huán)境變量與配置文件管理全解析
這篇文章主要介紹了Docker Compose環(huán)境變量與配置文件管理全解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2025-04-04
如何根據(jù)docker服務(wù)保存日志腳本(時(shí)間可選版本)
在開(kāi)發(fā)基于Docker的應(yīng)用程序時(shí),能夠在日志中查找特定信息并將此數(shù)據(jù)保存到文件中可以加快故障排除和調(diào)試過(guò)程,這篇文章主要介紹了如何根據(jù)docker服務(wù)保存日志腳本(時(shí)間可選版本)的相關(guān)資料,需要的朋友可以參考下2025-11-11

