Docker不同宿主機網絡打通的操作方案
本方式使用docker Swarm集群的方式創(chuàng)建overlay 網絡進行打通
背景
因java微服務使用nacos做配置中心,為了解決Nacos服務注冊使用Docker容器內網ip問題,使用此方案
前置條件
1、宿主機之間需要開通端口
管理端口:
2377/tcp: 用于管理 Swarm 模式集群。這是 Swarm Manager 和 Worker 節(jié)點之間進行通信的主要端口,用于集群管理和任務調度。
節(jié)點間通信端口:
2375/tcp: 用于 Docker API 的通信。在 Swarm 模式下,這個端口通常只在 Manager 節(jié)點上開啟,供外部客戶端訪問。
2376/tcp: 與 2375 類似,但使用了 TLS 加密。如果啟用了 TLS,那么 2376 端口將被用于安全的 Docker API 訪問。
網絡端口:
4789/udp: 用于 VXLAN 通信,當使用 overlay 網絡驅動時會用到此端口。這是 Swarm 用于跨節(jié)點容器通信的主要端口之一。
7946/tcp and/or 7946/udp: 用于節(jié)點間的服務發(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)轉換為單一的虛擬 Docker 主機,使得容器可以組成跨主機的子網網絡。因此,docker版本必須大于1.12,以下我使用的docker版本為 27.1.1
安裝docker
因為docker源被屏蔽以后,安裝docker需要從阿里源進行安裝,如果需要詳細安裝過程,請參考文檔:http://chabaoo.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é)點,查看當前網絡集群的節(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 網絡
注意,這里強調使用--attachable參數(shù),否則docker-compose不能使用此網絡
docker network create -d overlay --attachable test
在 master 節(jié)點的查看是否創(chuàng)建成功
正常情況下,如果網絡未激活,則節(jié)點不會有test網絡,需要執(zhí)行后才會出現(xiàn)網絡
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
激活網絡,使節(jié)點存在overlay網絡
創(chuàng)建一個鏡像
busybox 鏡像可能拉取不到,各位大佬自行想辦法解決...,再次感謝 方老師~
highlighter- dockerfile
FROM busybox MAINTAINER lanheader@163.com ENTRYPOINT ["tail","-f","/etc/hosts"]
打包鏡像
docker build -t busybox-swarm . swarm
激活overlay 網絡
bash
docker service create --replicas 3 --name busybox-net --network test busybox-swarm
查看服務
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 配置文件中添加網絡
容器中執(zhí)行使用test網絡即可
networks: test: external: true
完畢?。?!
到此這篇關于Docker不同宿主機網絡打通 的文章就介紹到這了,更多相關Docker不同宿主機網絡打通 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
docker部署Prometheus+Cadvisor+Grafana實現(xiàn)服務器監(jiān)控
這篇文章主要為大家介紹了docker部署Prometheus+Cadvisor+Grafana實現(xiàn)服務器監(jiān)控,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11Spring Cloud中使用jib進行docker部署的步驟詳解
這篇文章主要介紹了Spring Cloud中使用jib進行docker部署的步驟詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09詳解Docker數(shù)據(jù)管理(數(shù)據(jù)卷&數(shù)據(jù)卷容器)
容器中管理數(shù)據(jù)主要有兩種方式,這篇文章主要介紹了詳解Docker數(shù)據(jù)管理(數(shù)據(jù)卷&數(shù)據(jù)卷容器) ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10