2個(gè)節(jié)點(diǎn)的docker容器網(wǎng)絡(luò)實(shí)現(xiàn)通信過(guò)程
在兩個(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 訪(fǎng)問(wèn)(簡(jiǎn)單)
- 容器運(yùn)行時(shí)使用
--network host(僅限 Linux) - 通過(guò)節(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ī)上,可能存在安全隱患。
方案二:通過(guò)宿主機(jī)端口映射 + 公有或內(nèi)網(wǎng) IP 訪(fǎng)問(wèn)(通用)
- 每個(gè)容器啟動(dòng)時(shí)用
-p暴露端口,例如:
docker run -d -p 8080:80 --name web nginx
- 讓另一個(gè)節(jié)點(diǎn)通過(guò) IP + 映射端口訪(fǎng)問(wèn):
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ò)
類(lèi)似于 Kubernetes CNI 網(wǎng)絡(luò)插件
- 適合:高可用需求、復(fù)雜網(wǎng)絡(luò)拓?fù)?/li>
- 配置復(fù)雜,需額外工具學(xué)習(xí)
方案五:自建Tinc實(shí)現(xiàn)跨主機(jī)容器通信
把所有節(jié)點(diǎn)接入同一虛擬網(wǎng)絡(luò)
容器綁定 --network bridge,通過(guò)虛擬 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ù)編排部署過(guò)程(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)文章
docker-compose安裝MySQL8.0.39全過(guò)程
這篇文章主要介紹了docker-compose安裝MySQL8.0.39全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-10-10
docker?desktop搜索不到images問(wèn)題的解決辦法
這篇文章主要給大家介紹了關(guān)于docker?desktop搜索不到images問(wèn)題的解決辦法,主要包括檢查網(wǎng)絡(luò)連接、Docker配置、清理緩存和使用其他鏡像源,通過(guò)這些方法,用戶(hù)可以解決在實(shí)際應(yīng)用中搜索不到Images的問(wèn)題,需要的朋友可以參考下2025-03-03
Docker容器化spring boot應(yīng)用詳解
本篇文章主要介紹了Docker容器化spring boot應(yīng)用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
使用Docker容器部署MongoDB并支持遠(yuǎn)程訪(fǎng)問(wèn)及遇到的坑
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的,今天通過(guò)本文給大家介紹使用Docker容器部署MongoDB并支持遠(yuǎn)程訪(fǎng)問(wèn)及遇到的坑,感興趣的朋友一起看看吧2022-07-07
使用TLS加密通訊遠(yuǎn)程連接Docker的示例詳解
這篇文章主要介紹了使用TLS加密通訊遠(yuǎn)程連接Docker的示例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
docker compose 服務(wù)啟動(dòng)順序控制的方法
這篇文章主要介紹了docker compose 服務(wù)啟動(dòng)順序控制的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09

