Docker进阶学习-2 swarm overlay测试
之所以研究swarm overlay,是因为在研究边缘计算框架EdgeX时,他默认使用映射端口方式,尝试使用docker swarm解决不同主机分开部署服务时的docker互相访问问题
首先转载网上一张图
1、拓扑结构如下
管理节点:要将应用程序部署到swarm,需要向管理节点提交一个服务定义。管理节点将称为任务的工作单元分派给工作节点。执行所需的编排和群集管理功能,以保持群的所需状态。管理节点选择一个领导者来执行编排任务。
工作节点:接收并执行从管理节点调度的任务。默认情况下,管理节点也将服务作为工作节点运行,但您可以将它们配置为以独占方式运行管理任务并仅作为管理节点。代理在每个工作节点上运行,并报告分配给它的任务。worker节点将其分配任务的当前状态通知给manager节点,以便manager可以保持每个worker的所需状态。
2、在管理节点1上执行
docker swarm init
执行结果
Swarm initialized: current node (8pbeemanze4hic086lg9vatgq) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-5u7vluy344umgyreimctpoeuvabz4yp5dz4xney55cypvsv15n-9r5e5at6z1ri63b2azy0ob81p 192.168.137.6:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
3、在管理节点1上创建overlay 网络net1
docker network create -d overlay --attachable demo
返回一串数字
yxc3n42en2j8s2xewrmzax6es
以工作节点1为例:
4、在工作节点1上执行加入主机
docker swarm join --token SWMTKN-1-5u7vluy344umgyreimctpoeuvabz4yp5dz4xney55cypvsv15n-9r5e5at6z1ri63b2azy0ob81p 192.168.137.6:2377
5、docker network ls
只有一个名为ingreee的overlay网络
6、在管理节点1、工作节点1上分别执行
sudo docker run -it --rm --name test1 --net demo busybox /bin/sh
sudo docker run -it --rm --name test2 --net demo busybox /bin/sh
然后从新开一个ssh连接,r可以看到名为demo的
如果docker删除掉,那么这个网络也会消失,说明是按需创建的。
进入容器,退出容器前后(退出自动删除容器)对比
7、在两个容期间互相访问
8、修改EdgeX docker compose文件,修改networks部分为
其它服务部分也改成
9、启动
提示:ERROR: Network demo declared as external, but could not be found. Please create the network manually using `docker network create demo` and try again.
10、按第6步,随便启动一个基于demo网络的容器,可以启动了,查看地址,确实加入demo网络了
不知道算不算一个BUG。
11、适应场景
如果在不同节点创建一个相同的docker名称,将会绑定失败。
12、Vi替换方法
vi模式批量替换字符串
:s/old_string/new_string/g
/word 自当前光标位置向下搜索名字为word的字符串
?word 自当前光标位置向上搜索名字为word的字符串
:n 1,n 2 s/word1/word2/g 在n1行与n2行之间搜索名字为word1的字符串,并将其替换成word2
:1,$s/word1/word2/g 在第一行与最后一行之间搜索名字为word1的字符串,并将其替换成word2
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。