2個(gè)節(jié)點(diǎn)的docker容器網(wǎng)絡(luò)實(shí)現(xiàn)通信過程
在兩個(gè)節(jié)點(diǎn)(物理機(jī)或虛擬機(jī))上運(yùn)行的 Docker 容器之間實(shí)現(xiàn)網(wǎng)絡(luò)通信,主要有以下幾種方式,具體選擇取決于你的部署需求、復(fù)雜性接受度以及是否使用編排工具(如 Docker Swarm 或 Kubernetes)。
常用方案匯總
方案一:使用host網(wǎng)絡(luò) + 宿主機(jī) IP 訪問(簡(jiǎn)單)
- 容器運(yùn)行時(shí)使用
--network host(僅限 Linux) - 通過節(jié)點(diǎn)的 IP 地址進(jìn)行通信,例如:
節(jié)點(diǎn)A容器 -> curl http://<節(jié)點(diǎn)B的IP>:端口/
適合:快速調(diào)試、小規(guī)模部署
缺點(diǎn):不適用于跨平臺(tái)(如 Mac/Windows),端口暴露在宿主機(jī)上,可能存在安全隱患。
方案二:通過宿主機(jī)端口映射 + 公有或內(nèi)網(wǎng) IP 訪問(通用)
- 每個(gè)容器啟動(dòng)時(shí)用
-p暴露端口,例如:
docker run -d -p 8080:80 --name web nginx
- 讓另一個(gè)節(jié)點(diǎn)通過 IP + 映射端口訪問:
curl http://<對(duì)方主機(jī)IP>:8080
- 適合:多節(jié)點(diǎn)手動(dòng)管理通信
- 缺點(diǎn):需要管理端口映射;跨主機(jī)容器發(fā)現(xiàn)復(fù)雜
方案三:Docker Swarm 網(wǎng)絡(luò)(官方跨主機(jī) overlay 網(wǎng)絡(luò))
- 初始化 Swarm 集群:
docker swarm init --advertise-addr <節(jié)點(diǎn)1IP>
- 加入其他節(jié)點(diǎn)(會(huì)生成
docker swarm join命令) - 創(chuàng)建 overlay 網(wǎng)絡(luò):
docker network create -d overlay mynet
- 使用該網(wǎng)絡(luò)運(yùn)行容器:
docker service create --name web --network mynet nginx
- 適合:生產(chǎn)環(huán)境,服務(wù)自動(dòng)發(fā)現(xiàn)
- 需要學(xué)習(xí) Swarm;容器必須用
docker service管理(不是docker run)
方案四:使用獨(dú)立網(wǎng)絡(luò)插件(如 Weave, Calico, flannel)
這些工具為 Docker 提供跨主機(jī)容器網(wǎng)絡(luò)
類似于 Kubernetes CNI 網(wǎng)絡(luò)插件
- 適合:高可用需求、復(fù)雜網(wǎng)絡(luò)拓?fù)?/li>
- 配置復(fù)雜,需額外工具學(xué)習(xí)
方案五:自建 VPN(如 Tinc、WireGuard)實(shí)現(xiàn)跨主機(jī)容器通信
把所有節(jié)點(diǎn)接入同一虛擬網(wǎng)絡(luò)
容器綁定 --network bridge,通過虛擬 IP 通信
- 適合:定制化網(wǎng)絡(luò)
- 運(yùn)維成本高
推薦做法(具體場(chǎng)景推薦)
| 場(chǎng)景 | 推薦方案 |
|---|---|
| 簡(jiǎn)單調(diào)試或臨時(shí)通信 | 方案一、方案二 |
| 生產(chǎn)集群容器管理 | 方案三(Docker Swarm) |
| 高可用+容器發(fā)現(xiàn)+安全網(wǎng)絡(luò) | 方案三或方案四 |
| 已部署私有 VPN 網(wǎng)絡(luò) | 方案五 |
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 阿里云docker容器固定應(yīng)用到到某一個(gè)節(jié)點(diǎn)記錄
- docker單節(jié)點(diǎn)服務(wù)編排部署過程(docker-compose)
- Docker實(shí)現(xiàn)安裝ELK(單節(jié)點(diǎn))
- Docker系列學(xué)習(xí)之Swarm mode管理節(jié)點(diǎn)常用命令詳解
- docker-compose搭建etcd集群的實(shí)現(xiàn)(三節(jié)點(diǎn))
- docker搭建mongodb單節(jié)點(diǎn)副本集的實(shí)現(xiàn)
- Docker安裝node-red、導(dǎo)入節(jié)點(diǎn)、部署查看的步驟詳解
相關(guān)文章
Linux系統(tǒng)通過Docker安裝SQL?Server數(shù)據(jù)庫(kù)
這篇文章介紹了Linux系統(tǒng)通過Docker安裝SQL?Server數(shù)據(jù)庫(kù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
Docker如何解決tomcat容器啟動(dòng)成功,無(wú)法訪問的問題
這篇文章主要介紹了Docker如何解決tomcat容器啟動(dòng)成功,無(wú)法訪問的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
docker直接下載太慢,如何更換國(guó)內(nèi)靠譜鏡像源
這篇文章主要介紹了docker直接下載太慢,如何更換國(guó)內(nèi)靠譜鏡像源問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
使用Docker部署todo任務(wù)管理器的實(shí)現(xiàn)
本文介紹使用Docker部署Todo任務(wù)管理器的全過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07

