Docker不同宿主機網(wǎng)絡(luò)打通的操作方案
本方式使用docker Swarm集群的方式創(chuàng)建overlay 網(wǎng)絡(luò)進行打通
背景
因java微服務(wù)使用nacos做配置中心,為了解決Nacos服務(wù)注冊使用Docker容器內(nèi)網(wǎng)ip問題,使用此方案
前置條件
1、宿主機之間需要開通端口
管理端口:
2377/tcp: 用于管理 Swarm 模式集群。這是 Swarm Manager 和 Worker 節(jié)點之間進行通信的主要端口,用于集群管理和任務(wù)調(diào)度。
節(jié)點間通信端口:
2375/tcp: 用于 Docker API 的通信。在 Swarm 模式下,這個端口通常只在 Manager 節(jié)點上開啟,供外部客戶端訪問。
2376/tcp: 與 2375 類似,但使用了 TLS 加密。如果啟用了 TLS,那么 2376 端口將被用于安全的 Docker API 訪問。
網(wǎng)絡(luò)端口:
4789/udp: 用于 VXLAN 通信,當(dāng)使用 overlay 網(wǎng)絡(luò)驅(qū)動時會用到此端口。這是 Swarm 用于跨節(jié)點容器通信的主要端口之一。
7946/tcp and/or 7946/udp: 用于節(jié)點間的服務(wù)發(fā)現(xiàn)和心跳消息。這兩個端口用于 Raft 協(xié)議中的通信,以便維護集群狀態(tài)的一致性。
2、docker版本
Swarm 在 Docker 1.12 版本之前屬于一個獨立的項目,在 Docker 1.12 版本發(fā)布之后,該項目合并到了 Docker 中,成為 Docker 的一個子命令。目前,Swarm 是 Docker 社區(qū)提供的唯一一個原生支持 Docker 集群管理的工具。它可以把多個 Docker 主機組成的系統(tǒng)轉(zhuǎn)換為單一的虛擬 Docker 主機,使得容器可以組成跨主機的子網(wǎng)網(wǎng)絡(luò)。因此,docker版本必須大于1.12,以下我使用的docker版本為 27.1.1
安裝docker
因為docker源被屏蔽以后,安裝docker需要從阿里源進行安裝,如果需要詳細安裝過程,請參考文檔:http://www.dbjr.com.cn/server/3262162uf.htm
前期只需要替換源即可,這里不做過多的描述,系統(tǒng)我使用的是ubuntu 22
# 安裝GPG證書 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # 安裝源 sudo sh -c 'echo "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list' # 驗證是否成功安裝了docker sudo systemctl status docker docker --version
安裝Swarm集群
master執(zhí)行
docker swarm init --advertise-addr=192.168.0.1 # 注意替換這里的IP,IP為master的ip Swarm initialized: current node (maw28ll7mlxuwp47z5c5vo2v1) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token xxxxxxxxxxxxxxxxxxxxxxxxxxxxx 192.168.0.1:2377 # 注意保存此行命令 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
work節(jié)點執(zhí)行
這個是加入節(jié)點的命令,刪除節(jié)點使用 docker swarm leave
docker swarm join --token xxxxxxxxxxxxxxxxxxxxxxxxxxxxx 192.168.0.1:2377
在 manager 節(jié)點,查看當(dāng)前網(wǎng)絡(luò)集群的節(jié)點情況
highlighter- apache
root@ubuntu22:~# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 7r4vvml8kd2jem850rqfl158h * ubuntu22 Ready Active Leader 27.1.1 lrvsq6quwaxleqejf0w1nawvu ubuntu22 Ready Active 27.1.1 u4v4os8zats4ro795a4l6lw3y ubuntu22 Ready Active 27.1.1 root@ubuntu22:~#
在 manager 節(jié)點,創(chuàng)建 overlay 網(wǎng)絡(luò)
注意,這里強調(diào)使用--attachable參數(shù),否則docker-compose不能使用此網(wǎng)絡(luò)
docker network create -d overlay --attachable test
在 master 節(jié)點的查看是否創(chuàng)建成功
正常情況下,如果網(wǎng)絡(luò)未激活,則節(jié)點不會有test網(wǎng)絡(luò),需要執(zhí)行后才會出現(xiàn)網(wǎng)絡(luò)
root@ubuntu22:~# docker network ls NETWORK ID NAME DRIVER SCOPE 28d3903acdb2 bridge bridge local c2147e916c72 docker_gwbridge bridge local 7jczo6vw7mig test overlay swarm 63fa0e285c02 host host local ypqnzuafqukz ingress overlay swarm b0e97299b587 none null local
激活網(wǎng)絡(luò),使節(jié)點存在overlay網(wǎng)絡(luò)
創(chuàng)建一個鏡像
busybox 鏡像可能拉取不到,各位大佬自行想辦法解決...,再次感謝 方老師~
highlighter- dockerfile
FROM busybox MAINTAINER lanheader@163.com ENTRYPOINT ["tail","-f","/etc/hosts"]
打包鏡像
docker build -t busybox-swarm . swarm
激活overlay 網(wǎng)絡(luò)
bash
docker service create --replicas 3 --name busybox-net --network test busybox-swarm
查看服務(wù)
root@ubuntu22:~# docker service ls ID NAME MODE REPLICAS IMAGE PORTS iicn2h7rw3af busybox-net replicated 3/3 busybox-swarm:latest
查看節(jié)點容器工作狀態(tài)
highlighter- sql
# 查看節(jié)點 root@ubuntu22:~# docker service ps busybox-net ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS s9reawp6seu5 busybox-net.1 busybox-swarm:latest ubuntu22 Running Running 41 minutes ago iw3fvcy3tu14 busybox-net.2 busybox-swarm:latest ubuntu22 Running Running about an hour ago vn16j18a2jzd busybox-net.3 busybox-swarm:latest ubuntu22 Running Running about an hour ago
測試
使用docker inspect xxx 查看容器IP地址
在docker exec -it xxx sh 進入容器進行測試
Docker-compose 配置文件中添加網(wǎng)絡(luò)
容器中執(zhí)行使用test網(wǎng)絡(luò)即可
networks: test: external: true
完畢!??!
到此這篇關(guān)于Docker不同宿主機網(wǎng)絡(luò)打通 的文章就介紹到這了,更多相關(guān)Docker不同宿主機網(wǎng)絡(luò)打通 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker部署Prometheus+Cadvisor+Grafana實現(xiàn)服務(wù)器監(jiān)控
這篇文章主要為大家介紹了docker部署Prometheus+Cadvisor+Grafana實現(xiàn)服務(wù)器監(jiān)控,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11Spring Cloud中使用jib進行docker部署的步驟詳解
這篇文章主要介紹了Spring Cloud中使用jib進行docker部署的步驟詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09Docker容器內(nèi)應(yīng)用服務(wù)自啟動的方法示例
這篇文章主要介紹了Docker容器內(nèi)應(yīng)用服務(wù)自啟動的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09詳解Docker數(shù)據(jù)管理(數(shù)據(jù)卷&數(shù)據(jù)卷容器)
容器中管理數(shù)據(jù)主要有兩種方式,這篇文章主要介紹了詳解Docker數(shù)據(jù)管理(數(shù)據(jù)卷&數(shù)據(jù)卷容器) ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10