搭建Docker-swarm

swarm运行Docker Engine的多个主机组成的集群。
自从1.12版本 开始,集群管理和编排功能已经集成进 Docker Engine 当 Docker Engine 初始化了一个 swarm 或者加入到一个存在的 swarm 时,它就启动了 swarm mode。
没启动 swarm mode 时,docker 执行的是容器命令;运行 swarm mode 后,docker 增加了编排 service 的能力。
Docker 允许在同一个 docker 主机上既运行 swarm service,又运行单独的容器。

实践Docker swarm

实验环境
swarm-node1 192.168.64.10
swarm-node2 192.168.64.20
swarm-node3 192.168.64.30

修改hosts文件
解析每个主机的节点

[root@node1 ~]# vim  /etc/hosts

在这里插入图片描述
并上传到node2和node3

[root@node1 ~]# scp  /etc/hosts  node2:/etc/
[root@node1 ~]# scp  /etc/hosts  node3:/etc/

关闭selinux并从启生效

[root@node1 ~]# vim  /etc/selinux/config
[root@node1 ~]# reboot

在这里插入图片描述
这个命令可以返回selinux的状态

[root@node1 ~]# getenforce

生成密钥对
每台都要互通

node1免密登录node2 node3

[root@node1 ~]# ssh-keygen -t  rsa
[root@node1 ~]# ssh-copy-id  -i node2
[root@node1 ~]# ssh-copy-id  -i node3

node2免密登录node1 node3

[root@node1 ~]# ssh-keygen -t  rsa
[root@node1 ~]# ssh-copy-id  -i node1
[root@node1 ~]# ssh-copy-id  -i node3

node3免密登录node1 node2

[root@node1 ~]# ssh-keygen -t  rsa
[root@node1 ~]# ssh-copy-id  -i node1
[root@node1 ~]# ssh-copy-id  -i node2

防火墙开放端口
2377远程执行命令的端口

[root@node1 ~]# firewall-cmd  --add-port={2377,7946,4789}/tcp  --permanent
[root@node1 ~]# firewall-cmd  --add-port={7946,4789}/udp  --permanent
[root@node1 ~]# firewall-cmd  --reload

查看路由转发的状态

[root@node1 ~]# sysctl  -a  | grep  ip_forward

部署一个私有仓库镜像

[root@node1 ~]# docker  search  registry
[root@node1 ~]# docker  pull  registry:2

做一个私有仓库

[root@node1 ~]# docker  run  -dit -p 5000:5000  --restart always -v /opt/data/registry:/var/lib/registry --name registry registry:2

测试:

[root@node1 ~]# curl node1:5000/v2/_catalog

把镜像打包

[root@node1 ~]# docker tag httpd:latest  192.168.64.10:5000/httpd
[root@node1 ~]# docker tag busybox:latest  192.168.64.10:5000/busybox

修改启动脚本

[root@node1 ~]# vim  /usr/lib/systemd/system/docker.service

在这里插入图片描述
三台都从新加载并从启

[root@node1 ~]# systemctl  daemon-reload
[root@node1 ~]# systemctl  restart docker

并上传到node2 node3上

[root@node1 ~]# scp  /usr/lib/systemd/system/docker.service  node2://usr/lib/systemd/system/docker.service
[root@node1 ~]# scp  /usr/lib/systemd/system/docker.service  node3://usr/lib/systemd/system/docker.service

把镜像上传到仓库并检查

[root@node1 ~]# docker  push 192.168.64.10:5000/httpd:latest
[root@node1 ~]# docker  push 192.168.64.10:5000/busybox:latest
[root@node1 ~]# curl  node1:5000/v2/_catalog

下载一个镜像试试

[root@node2 ~]# docker  pull 192.168.64.10:5000/httpd

部署swarm
帮助:

[root@node1 ~]# docker --help

在这里插入图片描述
在这里插入图片描述
init 初始化一个集群 adver发布一个地址

[root@node1 ~]# docker swarm  init --advertise-addr 192.168.64.10

把node2 node3加入集群

[root@node2 ~]# docker swarm join --token SWMTKN-1-0fw2z76azpa3hw71bvavyiy662uff8ng83k935r6t4ui63bwhr-e3s6ujfr5s2n8f5321xbewxi4 192.168.64.10:2377
[root@node3 ~]# docker swarm join --token SWMTKN-1-0fw2z76azpa3hw71bvavyiy662uff8ng83k935r6t4ui63bwhr-e3s6ujfr5s2n8f5321xbewxi4 192.168.64.10:2377

提升
node1是leader可以管理每一个节点

[root@node1 ~]# docker node promote node2

降级

[root@node1 ~]# docker node demote node2

做一个可视化工具

[root@node1 ~]# docker search  visualizer
[root@node1 ~]# docker pull dockersamples/visualizer

打个标签传到私有仓库里

[root@node1 ~]# docker  tag  dockersamples/visualizer:latest  192.168.64.10:5000/visualizer
[root@node1 ~]# docker  push 192.168.64.10:5000/visualizer

启动可视化容器

[root@node1 ~]# docker  run -dit -p 8888:8080  -e  HOST=192.168.64.10 -e  PORT=8080  -v /var/run/docker.sock  192.168.64.10:5000/visualizer:latest

访问8888端口
在这里插入图片描述
跑服务
帮助:
在这里插入图片描述
创建一个服务

[root@node1 ~]# docker  service  create --name  web_server   192.168.64.10:5000/httpd

查看跑了多少服务

[root@node1 ~]# docker  service  ls

查看当前的任务

[root@node1 ~]# docker  service  ps web_server

扩展到五个任务三台节点随机跑

[root@node1 ~]# docker service  scale web_server=5

在这里插入图片描述
减少任务
加几个就有几个

[root@node1 ~]# docker service  scale web_server=3

在这里插入图片描述
去除工作节点 运行的任务会自动跑到别的节点

[root@node1 ~]# docker  node update --availability  drain  node1

把node2关机
在这里插入图片描述
删掉某一个容器

[root@node3 ~]# docker rm -f  web_server.1.sq1rydjabbdm8w7xevhlwqrf6

在这里插入图片描述
公布一个节点

[root@node3 ~]# docker  service update --publish-add  8080:80  web_server

访问节点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值