文章目录
前言
接上一篇文章Docker三剑客之Swarm
继续往下学习
前一篇文章有两个弊端
- 都是用命令在部署
- 监控仅仅是监控,不能以webUI的方式直观简单的帮我们管理容器集群
我们可以利用已学的Docker Compose去部署,再利用轻量级可视化管理工具Portainer代替swarm管理集群工具
这篇文章相当于一个优化方案。
1、利用Docker Stack部署
tips: Docker Compose和Docker Stack使用差不多,具体差别请参看另一篇博客
Docker Compose和Docker Stack区别
做这个实验前需要把之前安装的监控容器以及运行的web容器全部down掉,不然看不出效果。
部署步骤:
docker宿主机家目录下新建compose目录
mkdir compose
cd compose
vim docker-compose.yml
docker stack --help
docker stack deploy -c docker-compose.yml my_cluster
docker-compose.yml内容:
version: "3.9"
services:
web:
image: myapp:v1
networks:
- mynet
deploy:
replicas: 8 #启动个数
update_config:
parallelism: 2 #最小一次更新单位
delay: 10s #更新间隔时间
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:
mynet:
效果:
2、portainer工具安装
2.1 同样利用Docker Stack推这个portainer服务
[root@server1]# cd docker/portainer/
[root@server1 portainer]# ls
portainer-agent-stack.yml portainer-agent.tar portainer.tar
[root@server1 portainer]# cat portainer-agent-stack.yml
version: '3.2'
services:
agent:
image: portainer/agent
environment:
# REQUIRED: Should be equal to the service name prefixed by "tasks." when
# deployed inside an overlay network
AGENT_CLUSTER_ADDR: tasks.agent
# AGENT_PORT: 9001
# LOG_LEVEL: debug
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
networks:
- agent_network
deploy:
mode: global
placement:
constraints: [node.platform.os == linux]
portainer:
image: portainer/portainer
command: -H tcp://tasks.agent:9001 --tlsskipverify
ports:
- "9000:9000"
volumes:
- portainer_data:/data
networks:
- agent_network
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
agent_network:
driver: overlay
attachable: true
volumes:
portainer_data:
2.2 解出包中的portainer和portainer-agent镜像
2.3 将镜像上传到本地私有仓库(server1)
2.4 将portainer-agent-stack.yml文件scp到server2上,放到compose目录里
2.5 修改portainer-agent-stack.yml文件内容
将镜像改为私有仓库里的portainer和agent,这样就可以从私有仓库里面安装了。
2.6安装
docker stack ls #列出之前运行的集群
docker stack rm my_cluster #移除该集群
docker stack deploy -c portainer-agent-stack.yml portainer # 部署portainer
2.7 浏览器通过9000端口访问,这里portainer就部署完成
可以直接通过UI界面代替swarm管理集群,记得配置下registry(私有仓库),这样就很完美。