0
点赞
收藏
分享

微信扫一扫

Docker Swarm

洲行 2022-01-26 阅读 75

一、基本简介     

        Docker Swarm Docker社区提供的唯一一个原生的支持Docker集群管理的工具。

        Swarm可以把多个Docker主机组成的系统转化为单一的虚拟Docker主机,使容器可以组成跨主机的子网网络。

其中Docker Swarm中的节点分为管理端和工作端;任务是Swarm中最小的调度单位,为单一的调度容器;服务则是指一组任务的集合。

图 1 swarm运行机制

二 、配置swarm集群

2.1 基本配置

###在server1上设置管理端;并查看tocken和ip信息。
[root@server1 ~]# docker swarm init

###在需要加入的节点上运行相应的命令即可
[root@server2 ~]# docker swarm join --token SWMTKN-1-3p8anxoad8wyyqc3dk0wvj5a1n1cvou8x2dkz04enioz8gallv-cq646stkesv6krmpah8i1xuul 192.168.1.71:2377

###查看当前的swarm的管理端和节点端
[root@server1 ~]# docker node ls

图 2 初始化管理节点

 

图 3 查看节点信息

 2.2 更改管理节点

###更改管理节点

###提升server2为manager,将server1将为work
[root@server2 ~]# docker node promote server2

[root@server1 ~]# docker node demote server1

##离开swarm
[root@server1 ~]# docker swarm leave
[root@server2 /]# docker node rm server1

##启动1上的harbor
[root@server1 harbor]# docker-compose up -d


###指定server1 server2 的仓库
[root@server1 ~]# cd /etc/docker/
[root@server1 docker]# cat daemon.json
{

"registry-mirrors": ["https://reg.westos.org:443"]
}
[root@server1 docker]# scp daemon.json server2:/etc/docker/

[root@server1 docker]# scp daemon.json server3:/etc/docker/

###将harbor的证书给server3 和 server2
[root@server1 docker]# scp -r certs.d/ server2:/etc/docker/

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

【说明】离开节点后,是自动离开集群,需要加入集群,需要重新执行join命令

图 4 更改管理节点

 

图 5 删除集群中的节点

 

图 6 启动harbor

 

图 7 配置各个节点的docker代理点

 2.3 服务配置

###根据node创建Nginx服务
[root@server2 docker]# docker service create --name=my_web --publish 80:80 --replicas 4 nginx

###查看所运行的服务
[root@server2 docker]# docker service ls

###查看服务的负载均衡
[root@server2 docker]# docker service ps my_web

##删除服务
[root@server2 docker]# docker service rm my_web


图 8 查看服务配置信息

 三、配置visualizer监控

###监控参考文档:https://gitee.com/yunwisdoms/docker-swarm-visualizer?_from=gitee_search

###运行监控(监控是在manager上运行的):visualizer
[root@server2 docker]# 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 \
> dockersamples/visualizer
###没有镜像时会自动下载

###运行容器,再次在网页查看
[root@server2 docker]# docker service create --name=my_web --publish 80:80 --replicas 4 nginx


图 9 manager添加监控

 

图 10 查看监控页面

 

图 11 查看监控信息

 四 、滚动更新

###服务滚动更新
[root@server2 docker]# docker service update --image nginx:1.18.0 --update-parallelism 2 --update-delay 5s my_web
##--image:更新的镜像 --update-parallelism 更新的数量 --update-delay 更新的时间间隔

### 服务回滚
[root@server2 docker]# docker service update --rollback my_web

图 12 服务更新

 

图 13 监控查看服务更新过程

五、 通过compose批量处理

        使用docker stack,编写yml配置文件进行批量配置

###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:

##通过stack直接部署
[root@server2 docker]# docker stack deploy -c docker-compose.yml my_web2
[root@server2 docker]# docker stack ps my_web2

图 14 使用stack配置

六、图形化监视界面:portainer

###可视化图形界面:portainer
###官方文件:https://docs.portainer.io/v/ce-2.11/start/install/server/swarm/linux

###下载配置文件
[root@server2 portainer]# curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml

###使用stack运行
[root@server2 portainer]# docker stack deploy -c portainer-agent-stack.yml portainer

图 15 配置portainer监控页面

 

举报

相关推荐

0 条评论