Docker Swarm实践

1. 创建Swarm集群

起始管理节点server3

[root@server3 ~]# docker swarm  init
[root@server1 ~]#  docker swarm join --token SWMTKN-1-0ai1jizq34dpwwpdzv2idzd5s9oc125370uba6x3goxu8k9r7o-42zx2bxjcbpfkvosy0shkrvqf 172.25.16.3:2377
[root@server2 ~]#  docker swarm join --token SWMTKN-1-0ai1jizq34dpwwpdzv2idzd5s9oc125370uba6x3goxu8k9r7o-42zx2bxjcbpfkvosy0shkrvqf 172.25.16.3:2377
[root@server4 ~]# yum install  -y docker-ce
[root@server4 ~]# systemctl  start  docker.service 
[root@server4 ~]# systemctl  enable  docker.service 

[root@server4 ~]#  docker swarm join --token SWMTKN-1-0ai1jizq34dpwwpdzv2idzd5s9oc125370uba6x3goxu8k9r7o-42zx2bxjcbpfkvosy0shkrvqf 172.25.16.3:2377
[root@server3 ~]# docker node  ls

在这里插入图片描述

[root@server3 ~]# docker node  promote  server2
Node server2 promoted to a manager in the swarm.
[root@server3 ~]# docker node  demote  server3
Manager server3 demoted in the swarm.
[root@server2 ~]# docker node rm 1ky8tkb6whfrh6cck5fg67fts --force 
删除server3节点
[root@server2 ~]# docker node ls

在这里插入图片描述

[root@server3 ~]# cd /etc/sysctl.d/
[root@server3 sysctl.d]# ls
99-sysctl.conf  docker.conf
[root@server3 sysctl.d]# scp docker.conf  server1:/etc/sysctl.d
[root@server3 sysctl.d]# scp docker.conf  server2:/etc/sysctl.d
[root@server3 sysctl.d]# scp docker.conf  server4:/etc/sysctl.d
各个节点执行sysctl --system 消除 docker info 警告 
[root@server3 ~]# docker load  -i myapp.tar 
[root@server3 ~]# cd harbor/
[root@server3 harbor]# docker-compose  ps

在这里插入图片描述

[root@server2 docker]# scp -r certs.d/ server1:/etc/docker/
[root@server2 docker]# scp -r certs.d/ server4:/etc/docker/

[root@server3 harbor]# cd /etc/docker/
[root@server3 docker]# ls
certs.d  daemon.json  key.json
[root@server3 docker]# vim /etc/hosts
[root@server3 docker]# docker tag  ikubernetes/myapp:v1 reg.westos.org/library/myapp:v1
[root@server3 docker]# docker tag  ikubernetes/myapp:v1 reg.westos.org/library/myapp:v2
[root@server3 docker]# docker push reg.westos.org/library/myapp:v1
[root@server3 docker]# curl 172.25.16.2/hostname.html

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 部署swarm监控


[root@server2 ~]# docker  service  ps webservice 
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
e6tywhaqrcop        webservice.1        myapp:v1            server2             Running             Running 45 minutes ago                       
3tqli05kpp84        webservice.2        myapp:v1            server4             Running             Running 45 minutes ago                       
wgcrtytzjpco        webservice.3        myapp:v1            server1             Running             Running 45 minutes ago                       
[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

在这里插入图片描述
在这里插入图片描述

3. 实现业务滚动更新

[root@server2 docker]# docker service create --name my_web --replicas 3 -p 80:80 myapp:v1
[root@server1 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
myapp        <none>    d4a5e0eaa84f   2 years ago   15.5MB
[root@server4 ~]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
myapp        <none>    d4a5e0eaa84f   2 years ago   15.5MB
[root@server2 docker]# docker service scale my_web=10
[root@server3 ~]# docker pull ikubernetes/myapp:v2
[root@server3 ~]# docker tag ikubernetes/myapp:v2 reg.westos.org/library/myapp:v2
[root@server3 ~]# docker push reg.westos.org/library/myapp:v2 

4. 脚本自动化部署

[root@server3 ~]# docker load  -i visualizer.tar 

[root@server3 ~]# docker tag dockersamples/visualizer:latest  reg.westos.org/library/visualizer:latest
[root@server3 ~]# docker push  reg.westos.org/library/visualizer:latest
[root@server2 ~]# vim docker-compose.yml
[root@server2 ~]#  docker stack deploy -c docker-compose.yml mycluster

[root@server2 ~]# cat docker-compose.yml 
version: "3.8"
services:
  web:
    image: myapp:v2
    ports:
      - "80:80"
    networks:
      - webnet
    deploy:
      replicas: 60
      update_config:
        parallelism: 20
        delay: 5s
      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:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值