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安裝Postgres 12 + pgadmin的方法 (支持Apple M1)
這篇文章主要介紹了本地Docker安裝Postgres 12 + pgadmin的方法 (支持Apple M1),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
使用 docker部署tomcat并接入skywalking的使用
這里主要介紹了使用 docker 部署 tomact 并接入 skywalking 的使用,因?yàn)樵诰W(wǎng)上并沒(méi)有查到太多相關(guān)的信息,所以這里記錄下來(lái),需要對(duì)有需求的小伙伴提供一些幫助2021-04-04
如何調(diào)整Docker中nginx的日志級(jí)別詳解
這篇文章主要給大家介紹了關(guān)于如何調(diào)整Docker中nginx的日志級(jí)別的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09
基于Docker搭建Redis一主兩從三哨兵的實(shí)現(xiàn)
這篇文章主要介紹了基于Docker搭建Redis一主兩從三哨兵的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Docker四種網(wǎng)絡(luò)類(lèi)型原理實(shí)例解析
這篇文章主要介紹了Docker四種網(wǎng)絡(luò)類(lèi)型原理實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Docker之開(kāi)啟遠(yuǎn)程訪(fǎng)問(wèn)的實(shí)現(xiàn)
這篇文章主要介紹了Docker之開(kāi)啟遠(yuǎn)程訪(fǎng)問(wèn)的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
docker資源控制管理Cgroup的實(shí)現(xiàn)
本文主要介紹了docker資源控制管理Cgroup的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
在 Docker 中安裝和運(yùn)行 PostgreSQL的詳細(xì)步驟
本文簡(jiǎn)述在Docker中安裝和運(yùn)行PostgreSQL的流程安裝Docker、拉取鏡像、運(yùn)行容器并配置端口與密碼、驗(yàn)證容器狀態(tài)、連接數(shù)據(jù)庫(kù)及創(chuàng)建用戶(hù),完成數(shù)據(jù)庫(kù)部署,感興趣的朋友一起看看吧2025-06-06

