目录[code]本方式使用docker Swarm集群的方式创建overlay 网络举行买通[/code]背景因java微服务使用nacos做设置中心,为了解决Nacos服务注册使用Docker容器内网ip问题,使用此方案 前置条件1、宿主机之间需要开通端口管理端口:2377/tcp: 用于管理 Swarm 模式集群。这是 Swarm Manager 和 Worker 节点之间举行通讯的主要端口,用于集群管理和任务调理。 节点间通讯端口:2375/tcp: 用于 Docker API 的通讯。在 Swarm 模式下,这个端口通常只在 Manager 节点上开启,供外部客户端访问。 网络端口:4789/udp: 用于 VXLAN 通讯,当使用 overlay 网络驱动时会用到此端口。这是 Swarm 用于跨节点容器通讯的主要端口之一。 2、docker版本Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子下令。现在,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具。它可以把多个 Docker 主机构成的系统转换为单一的假造 Docker 主机,使得容器可以构成跨主机的子网网络。因此,docker版本必须大于1.12,以下我使用的docker版本为 27.1.1 安装docker[code]因为docker源被屏蔽以后,安装docker需要从阿里源举行安装,如果需要详细安装过程,请参考文档:https://www.jb51.net/server/3262162uf.htm 前期只需要替换源即可,这里不做过多的形貌,系统我使用的是ubuntu 22[/code] [code]# 安装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[/code]安装Swarm集群master实行[code]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.[/code]work节点实行[code]这个是加入节点的下令,删除节点使用 docker swarm leave[/code] [code]docker swarm join --token xxxxxxxxxxxxxxxxxxxxxxxxxxxxx 192.168.0.1:2377[/code]在 manager 节点,查看当前网络集群的节点环境highlighter- apache [code]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:~#[/code]在 manager 节点,创建 overlay 网络[code]注意,这里强调使用--attachable参数,否则docker-compose不能使用此网络[/code] [code]docker network create -d overlay --attachable test[/code]在 master 节点的查看是否创建成功[code]正常环境下,如果网络未激活,则节点不会有test网络,需要实行后才会出现网络[/code] [code]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[/code]激活网络,使节点存在overlay网络创建一个镜像[code]busybox 镜像大概拉取不到,各位大佬自行想办法解决...,再次感谢 方老师~[/code]highlighter- dockerfile [code]FROM busybox MAINTAINER lanheader@163.com ENTRYPOINT ["tail","-f","/etc/hosts"][/code]打包镜像[code]docker build -t busybox-swarm . swarm[/code]激活overlay 网络bash [code]docker service create --replicas 3 --name busybox-net --network test busybox-swarm[/code]查看服务[code]root@ubuntu22:~# docker service ls ID NAME MODE REPLICAS IMAGE PORTS iicn2h7rw3af busybox-net replicated 3/3 busybox-swarm:latest[/code]查看节点容器工作状态highlighter- sql [code]# 查看节点 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[/code]测试[code]使用docker inspect xxx 查看容器IP地址 在docker exec -it xxx sh 进入容器举行测试[/code]Docker-compose 设置文件中添加网络[code]容器中实行使用test网络即可[/code] [code]networks: test: external: true[/code]完毕!!! 到此这篇关于Docker不同宿主机网络买通 的文章就先容到这了,更多相干Docker不同宿主机网络买通 内容请搜索脚本之家以前的文章或继续浏览下面的相干文章希望大家以后多多支持脚本之家! 来源:https://www.jb51.net/server/326189gsa.htm 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|手机版|小黑屋|梦想之都-俊月星空
( 粤ICP备18056059号 )|网站地图
GMT+8, 2025-7-1 18:19 , Processed in 0.102081 second(s), 18 queries .
Powered by Mxzdjyxk! X3.5
© 2001-2025 Discuz! Team.