Docker Swarm未来替代者Docker Stack 并使用其部署轻量级可视化管理工具Portainer

前言

接上一篇文章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(私有仓库),这样就很完美。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



Docker Stack 部署轻量级可视化管理工具Portainer到此结束

猜你喜欢

转载自blog.csdn.net/weixin_41191813/article/details/113428147