Docker三剑客之swarm

初始化:
在这里插入图片描述
将server1添加为管理员
在这里插入图片描述
根据生成的token将server2、server3添加为节点
在这里插入图片描述
在这里插入图片描述
在leader端列出节点如下,添加成功

[root@server1 harbor]# docker node ls

在这里插入图片描述
给节点server2提权,然后移除server1

[root@server1 harbor]# docker node promote server2
Node server2 promoted to a manager in the swarm.
[root@server1 harbor]# docker node demote server1
Manager server1 demoted in the swarm.
[root@server1 harbor]# docker swarm leave
Node left the swarm.

在server2端(现已升为leader)删除server1,查看节点

[root@server2 ~]# docker node ls
[root@server2 ~]# docker node rm server1
[root@server2 ~]# docker node ls

在这里插入图片描述
将server4添加为节点(注意ip改为server2的)
在这里插入图片描述
开启harbor仓库,关于harbor仓库的搭建可以查看我之前的文章

[root@server1 harbor]# docker-compose start

在这里插入图片描述
网页访问harbor仓库
在这里插入图片描述
登录后的界面
在这里插入图片描述
告诉节点仓库的位置(要传的文件位置:etc/docker,几个节点都和1做过免密认证,所以可以以下边的方式传,否则要写ip)
在这里插入图片描述
将证书给他们(2我之前传了,没截图)
在这里插入图片描述
将域名解析给各节点加进去(2,3,4都加)
在这里插入图片描述
最后重启2,3,4的docker

systemctl restart docker

仓库我之前上传了一个nginx镜像,现在在server2从harbor仓库拉取一个nginx
在这里插入图片描述
开启三个服务

[root@server2 ~]# docker service create --name webservice --publish 80:80 --replicas 3 nginx

开启三个nginx服务,查看服务进程,正常运行在三个节点上
在这里插入图片描述
在server1端访问一下,可以直接访问ip
在这里插入图片描述
上传一个新的镜像

[root@server1 ~]# docker load -i myapp.tar 
[root@server1 ~]# docker tag ikubernetes/myapp:v1 reg.westos.org/library/myapp:v1
[root@server1 ~]# docker tag ikubernetes/myapp:v2 reg.westos.org/library/myapp:v2
[root@server1 ~]# docker push reg.westos.org/library/myapp:v1
[root@server1 ~]# docker push reg.westos.org/library/myapp:v2

harbor端看一下上传成功
在这里插入图片描述

删除服务换新镜像重新创建服务

[root@server2 ~]# docker service rm webservice
[root@server2 ~]# docker service create --name webservice --publish 80:80 --replicas 3 myapp:v1
[root@server2 ~]# docker service ps webservice

在这里插入图片描述
在server1端curl访问,可以看到实现了负载均衡
在这里插入图片描述
扩大规模,将3个服务变为6个

[root@server2 ~]# docker service scale webservice=6
[root@server2 ~]# docker service ps webservice

在这里插入图片描述

监控

给仓库传入监控镜像

[root@server1 ~]# docker load -i visualizer.tar 
[root@server1 ~]# docker tag dockersamples/visualizer:latest reg.westos.org/library/visualizer:latest
[root@server1 ~]# docker push reg.westos.org/library/visualizer:latest 

server2端运行监控服务
在这里插入图片描述

[root@server2 ~]# docker service create \
> --name=viz \
> --publish=8080:8080/tcp \
> --constraint=node.role==manager \
> --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
> visualizer

在这里插入图片描述
浏览器填入server2的ip,并通过我们设置的8080端口访问,界面如下
在这里插入图片描述
增大服务规模

[root@server2 ~]# docker service scale webservice=20

在这里插入图片描述
监控界面如下
在这里插入图片描述
对服务做如下更新,如果一次性加太多服务,可能会出问题,所以设置延时(镜像更新但v1比ingmeiyou被删除,只是关闭了)

[root@server2 ~]# docker service update --image myapp:v2 --update-parallelism 3 --update-delay 5s webservice 

在这里插入图片描述
看监控已经有一部分服务的镜像换为v2了
在这里插入图片描述
设置回滚,让v1和v2两个镜像换着来(v1开启v2关闭或者反过来)

[root@server2 ~]# docker service rollback webservice

在这里插入图片描述

看监控可以看到有的是v1,有的是v2,curl访问也可以看到效果
在这里插入图片描述
删除监控和服务,编写文件来部署

[root@server2 ~]# docker service rm webservice
webservice
[root@server2 ~]# docker service rm viz
viz
[root@server2 ~]# vim docker-compose.yml
#文件内容如下
version: "3.8"
services:
  web:
    image: myapp:v2
    ports:
      - "80:80"
    networks:
      - webnet
    deploy:
      replicas: 5		#部署的服务数量
      update_config:
        parallelism: 3	#每批3个
        delay: 5s		#延时5秒
      restart_policy:
        condition: on-failure

  visualizer:
    image: visualizer:latest
    ports:
      - "8080:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints:
          - "node.role==manager"

networks:
  webnet:

docker stack deploy部署

[root@server2 ~]# docker stack deploy -c docker-compose.yml mycluster
Creating network mycluster_webnet
Creating network mycluster_default
Creating service mycluster_web
Creating service mycluster_visualizer
[root@server2 ~]# docker stack ls
NAME                SERVICES            ORCHESTRATOR
mycluster           2                   Swarm

在这里插入图片描述
访问监控,部署成功!
在这里插入图片描述

图形化

在仓库创建项目
在这里插入图片描述
把镜像传到仓库

[root@server1 portainer]# docker load -i portainer.tar
[root@server1 portainer]# docker tag portainer/portainer:latest reg.westos.org/portainer/portainer:late
[root@server1 portainer]# docker load -i portainer-agent.tar
[root@server1 portainer]# docker tag portainer/agent:latest reg.westos.org/portainer/agent:latest
[root@server1 portainer]# docker push reg.westos.org/portainer/portainer:latest 
[root@server1 portainer]# docker push reg.westos.org/portainer/agent

在这里插入图片描述
部署服务(镜像里已经有写好的部署文件,用的是9000端口)

[root@server2 portainer]# docker stack deploy -c portainer-agent-stack.yml portainer

在这里插入图片描述
浏览器端访问
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值