Docker集群管理(docker stsack多服务部署、portanier可视化)

目录

一、Docker Stack 的概述及相关命令

二、实验环境的部署和清理

三、部署一个简单的Stack服务

四、镜像的更新

五、资源的控制

六、图形界面portainer的部署

 

 

一、Docker Stack概念

  •     技术由来:Docker Swarm在大规模场景下的多服务部署和管理是一件很难的事情,为解决此问题,产生了Docker stack,
  •     Docker Stack基于Docker Swarm之上来完成对多服务进行部署和管理的
  •     实现方式:通过使用与Compose一样的yml文件中定义应用,然后通过 docker stack deploy 命令完成部署和管理
  •     体系结构:Stack 位于 Docker 应用层级的最顶端。Stack 基于服务进行构建,而服务又基于容器
  •     Docker Stack与Docker Compose区别:
  •    Docker stack 不支持 "build" 指令它需要的镜像是预先已经构建好的,所以Docker-Compose 更适合开发场景
  •    Docker stack 功能包含在Docker引擎中,是Swarm mode的一部分
  •    Docker Stack是集成在Docker引擎中的,直接使用命令即可,而Docker Compose 则是一个Python项目,使用Docker API规范操作容器
  •    Docker Stack不支持version 2的yml文件,至少version 3以上。而Docker Compose 对version 2或3都可以处理
  •    Docker Stack 更适合处理多服务也能处理单机服务,而Docker Compose 仅能处理单机服务,所以Docker Stack 可以把Docker Compose的工作都处理了,占据了主导地位。
  • 命令
  •  


docker stack 相关的命令:

格式
Usage:    docker stack [OPTIONS] COMMAND
#Docker stack任务管理
Manage Docker stacks
#选项
Options:
      --orchestrator string   Orchestrator to use (swarm|kubernetes|all)|选择协调器是swarm还是k8s或者2者
#子命令
Commands:
  docker stack deploy                  ##加载一个新的stack任务或者更新某一stack任务
  docker stack  ls                     ##显示所有stack任务的列表
 docker  stack   ps                    ##列出某一个stack的详细任务
  docker stack   rm                    ##删除一个或者多个stack任务
  docker stack  services               ##列出某一个stack的所有服务

 

 

 

二、实验环境的部署和清理

主机 IP 作用
reg.westos.org 172.25.6.2 安装有Docker(18.09.6) 、私有仓库管理节点
server1 172.25.6.1 安装有Docker(18.09.6)、集群管理节点、可访问私有仓库
server3 172.25.6.3 安装有Docker(18.09.6)、集群工作节点、可访问私有仓库
server4 172.25.6.4 安装有Docker(18.09.6)、集群工作节点、可访问私有仓库

 

 

  1. 官网链接:https://docs.docker.com/compose/compose-file/

Docker集群管理(docker stsack多服务部署、portanier可视化)_第1张图片

 

 

如何缩短镜像的名称 创建一个私有加速器的文件 这样拉取到的镜像名称就会缩短

[root@server1 ~]# cd /etc/docker/
[root@server1 docker]# cat daemon.json 
{
  "registry-mirrors":["https://reg.westos.org"]
}

 

 

查看镜像

Docker集群管理(docker stsack多服务部署、portanier可视化)_第2张图片


 

查看数据卷列表

Docker集群管理(docker stsack多服务部署、portanier可视化)_第3张图片

 

清理掉不用的网络

docker network prune                ##清理掉不用的网络

在reg.westos.org上 :

Docker集群管理(docker stsack多服务部署、portanier可视化)_第4张图片

 

清理掉不用的卷组:

[root@server3 ~]# docker volume ls        ##查看卷组列表
[root@server3 ~]# docker volume prune     ##清理掉不用的卷组

Docker集群管理(docker stsack多服务部署、portanier可视化)_第5张图片

Docker集群管理(docker stsack多服务部署、portanier可视化)_第6张图片

 

 

 

三、部署一个简单的Stack服务

  • 配置docker-compose.yml文件
  • 测试
  • 副本的拉伸
  • 对于存储的简介

1、制作一个yml文件,开启一个web服务,使用nginx容器,生成3个副本,自定义卷与网络

[root@org compose]# vim docker-compose.yml
version: '3'                              ##版本好为3
services:                  
  web:
    image: library/nginx                  ##镜像的名称
    ports:                                ##端口映射为80
      - "80:80"
    volumes:                          
      - web-data:/usr/share/nginx/html    ##数据卷存放的地方
    networks:                             
      - vm_net                            ##网络名称 
    deploy:
      replicas: 3                         ##副本数为3自动均摊但3个节点上 
volumes:
  web-data:                               磁盘存储的名称 
networks:
  vm_net:

 

(1)、查看官网的配置信息

Docker集群管理(docker stsack多服务部署、portanier可视化)_第7张图片

 

(2)、将官网的配置信息写入docker-compose.yml文件中

Docker集群管理(docker stsack多服务部署、portanier可视化)_第8张图片

 

(3)、自动部署stack

[root@reg compose]# docker stack deploy -c docker-compose.yml my_cluster  ##stack 部署告诉文件在哪  命名为my_cluster

Docker集群管理(docker stsack多服务部署、portanier可视化)_第9张图片

 

2、测试:

查看创建的3个副本与各个节的匹配情况

[root@server1 compose]# docker service ps my_cluster_web

Docker集群管理(docker stsack多服务部署、portanier可视化)_第10张图片

 

 

3、拉伸副本的个数 :

[root@org compose]# vim docker-compose.yml
##version: '3'                              ##版本好为3
##services:                  
 ## web:
   ## image: library/nginx                  ##镜像的名称
    ##ports:                                ##端口映射为80
      - "80:80"
    ##volumes:                          
      ##- web-data:/usr/share/nginx/html    ##数据卷存放的地方
    ##networks:                             
      ##- vm_net                            ##网络名称 
    ##deploy:
      replicas: 10                         ##副本数为:10
##volumes:
  ##web-data:                               磁盘存储的名称 
##networks:
  ##vm_net:

 

 

拉伸副本数为10个

Docker集群管理(docker stsack多服务部署、portanier可视化)_第11张图片

 

创建stack副本

 

 

 

4、Stack存储简介

每个节点上会自动创建一个挂载卷 (但是每个节点上的数据都是独立的)

在本地挂载的卷,数据不能同步到其他节点上

(如果想要同步各个节点的数据,需要做分布式存储)

stack的存储:

docker volume ls        ##查看存储的信息

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第12张图片

 

查看磁盘存储的位置

[root@reg compose]#docker volume inspect my_cluster_web-data   ##查看磁盘存储的信息

Docker集群管理(docker stsack多服务部署、portanier可视化)_第13张图片

 

在发布的目录中写入

cd /var/lib/docker/volumes/my_cluster_web-data/_data    ##查看磁盘存储的发布目录
vim index.html
reg.westos.org                                  

vim index.com

Docker集群管理(docker stsack多服务部署、portanier可视化)_第14张图片

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第15张图片

 

 

访问reg.westos.org

[root@reg ]# curl 172.25.6.1
reg.westos.org
    

Docker集群管理(docker stsack多服务部署、portanier可视化)_第16张图片

(因为有10个副本三个节点所以一个节点对应多个副本

 

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第17张图片

 

 

在server4上 :

(reg.westos.org上的步骤)

Docker集群管理(docker stsack多服务部署、portanier可视化)_第18张图片

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第19张图片

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第20张图片

 

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第21张图片

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第22张图片

(访问的各个节点的数据都不一样)

 

 

 

 

四、给服务加监控:

  • 配置docker-compose.yml文件
  • 测试
  • 登录网页查相关的监控信息

1、配置docker-compose.yml文件、部署Stack

(1)、配置docker-compose.yml文件

version: '3'
services:
  web:
    image: library/nginx
    ports:
      - "80:80"
    volumes:
      - web-data:/usr/share/nginx/html
    networks:
      - vm_net
    deploy:
      replicas: 6										#副本扩容为6
  visualizer:											#添加监控visualizer,docker官方模板
    image: dockersamples/visualizer
    ports:
      - "8080:8080"                             ##监听的端口为8080
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
volumes:
  web-data:
networks:
  vm_net:

Docker集群管理(docker stsack多服务部署、portanier可视化)_第23张图片

 

(2)部署Stack

[root@server1 compose]# docker stack deploy -c docker-compose.yml my_cluster  ##stack 部署告诉文件在哪  命名为my_cluster

Docker集群管理(docker stsack多服务部署、portanier可视化)_第24张图片

 

 

 

(3)、查看部署项目的名称

[root@server1 compose]#docker stack service mu_cluster         ##查看文件中部署项目的名称

Docker集群管理(docker stsack多服务部署、portanier可视化)_第25张图片

(可以看到新部署的镜像已经生效)

 

2、测试

Docker集群管理(docker stsack多服务部署、portanier可视化)_第26张图片

 

(1)、查看8080端口是否开启

Docker集群管理(docker stsack多服务部署、portanier可视化)_第27张图片

 

 

3、打开浏览器输入:172.25.6.1:8080

Docker集群管理(docker stsack多服务部署、portanier可视化)_第28张图片

 

 

 

 

 

 

五、镜像的滚动更新

(只需要在文件中将原来的镜像修改为需要更新的镜像即可)

  • 私有仓库导入镜像、查看官网信息
  • 配置docker-compose.yml文件、添加限制内存的配置
  • 在网页上查看更

 

1、在私有仓库的管理节点上首先导入httpd镜像

[root@reg]#docker login httpd.tar          ##导入镜像 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第29张图片

 

 

 

(1)、上传镜像

Docker集群管理(docker stsack多服务部署、portanier可视化)_第30张图片

 

 

(3)、在私有仓库的登录页面上:

Docker集群管理(docker stsack多服务部署、portanier可视化)_第31张图片

 

 

(4)、在server1上拉取镜像:

[root@server1 ]#docker pull library/httpd

Docker集群管理(docker stsack多服务部署、portanier可视化)_第32张图片

 

(5)、打开官网查看滚动更新的配置信息

Docker集群管理(docker stsack多服务部署、portanier可视化)_第33张图片

 

 

2、修改yml文件,更新内容由容器nginx变为httpd

version: '3'
services:
  web:
    image: library/httpd						#容器变更
    ports:
      - "80:80"
    volumes:
      - web-data:/usr/local/apache2/htdocs		#挂载地址改变
    networks:
      - vm_net
    deploy:
      replicas: 6
      update_config:							#升级规则
        parallelism: 2							#每次更新2个副本
        delay: 5s								#每批次间隔5秒
      restart_policy:							#副本重启规则
        condition: on-failure
  visualizer:
    image: dockersamples/visualizer
    ports:
      - "8080:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
volumes:
  web-data:
networks:
  vm_net:

Docker集群管理(docker stsack多服务部署、portanier可视化)_第34张图片

 

部署、

[root@server1 compose]# docker stack deploy -c docker-compose.yml my_cluster  ##stack 部署告诉文件在哪  命名为my_cluster

Docker集群管理(docker stsack多服务部署、portanier可视化)_第35张图片

 

 

3、在网页上输入:172.25.6.1:8080 查看更新的情况

Docker集群管理(docker stsack多服务部署、portanier可视化)_第36张图片

 

查看httpd镜像对应的Pid

Docker集群管理(docker stsack多服务部署、portanier可视化)_第37张图片

 

 

 

六、资源控制

官方文档中:RESOURCES部分

  • 查看没有限制前的内存
  • 配置docker-compose.yml文件、添加限制内存的配置
  • 测试

1、查看没有限制时的状态

[root@server1 stack]# cd /sys/fs/cgroup/memory/docker/   ##进入cgroup文件下内存
[root@server1 docker]# cd cd8318ca5acc823e25d2fe5ddb2b4a01cc0635f0587cd1e6ec324e55718f5679/
[root@server1 cd8318ca5acc823e25d2fe5ddb2b4a01cc0635f0587cd1e6ec324e55718f5679]# cat memory.limit_in_bytes
9223372036854771712                     #查看容器上限

Docker集群管理(docker stsack多服务部署、portanier可视化)_第38张图片

Docker集群管理(docker stsack多服务部署、portanier可视化)_第39张图片

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第40张图片

(2)查看内存容量的大小

 

 

 

2、限制内存

配置docker-compose.yml文件、添加限制内存的配置

[root@server1 ~]# cd compose/
[root@server1 compose]# vim docker-compose.yml 

 

(1)、查看官网信息

Docker集群管理(docker stsack多服务部署、portanier可视化)_第41张图片

 

 

(2)、修改docker-compose.yml文件信息

version: "3"
services:
  web:
    image: library/httpd
    ports:
      - "80:80"
    volumes:
      - web-data:/usr/local/apache2/htdocs
    networks:
      - my_net
    deploy:
      replicas: 6
      update_config:
        parallelism: 2
        delay: 5s
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: '0.50'                              ##限制内存为之前的二分之一
          memory: 50M

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


volumes:
  web-data:
networks:
  my_net:

Docker集群管理(docker stsack多服务部署、portanier可视化)_第42张图片

 

 

3、测试

Docker集群管理(docker stsack多服务部署、portanier可视化)_第43张图片

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第44张图片

再次查看内存已经变成原来的二分之一

 

 

 

 

 

图形界面portainer的部署

    官方网站:https://www.portainer.io/

安装前准备

    portainer运行文件:https://downloads.portainer.io/portainer-agent-stack.yml
    portainer软件:portainer/portainer 和portainer/agent,在公有DockerHUB中可以下载,存放在本地harbor仓库中

 

  • 在私有仓库的控制节点上拉取镜像
  • 在server1上部署portainer图形化
  • 在网页上登录验证

1、在私有仓库的管理节点上使用阿里云加速从官网上直接拉取镜像

[root@reg ]# docker pull portaninet/portainer           
[root@reg ]# docker pull portaninet/agent

Docker集群管理(docker stsack多服务部署、portanier可视化)_第45张图片

Docker集群管理(docker stsack多服务部署、portanier可视化)_第46张图片

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第47张图片

 

 

2、部署portainer图形化命名为portaine

Docker集群管理(docker stsack多服务部署、portanier可视化)_第48张图片

 

[root@server1 ~]# docker stack service portaine      ##查看portaine图形化监控的服务信息 

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第49张图片

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第50张图片

 

 

(2)、在各个节点上也要部署portaninet/agent 镜像(否则无法监控到其他页面的情况)

Docker集群管理(docker stsack多服务部署、portanier可视化)_第51张图片

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第52张图片

 

[root@server1 ~]# docker stack deploy -c portainer-agent-stack.yml portainer   ##重新部署 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第53张图片

 

 

3、在网页上输入:172.25.6.1:9000
 

(1)、第一次登录,设置8位数密码

Docker集群管理(docker stsack多服务部署、portanier可视化)_第54张图片

 

(2)、查看服务:

Docker集群管理(docker stsack多服务部署、portanier可视化)_第55张图片

 

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第56张图片

 

 

(3)、改变监控的个数

Docker集群管理(docker stsack多服务部署、portanier可视化)_第57张图片

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第58张图片

 

(4)、查看集群的监控页面

Docker集群管理(docker stsack多服务部署、portanier可视化)_第59张图片

 

(4)、直接在原来页面上修改:

Docker集群管理(docker stsack多服务部署、portanier可视化)_第60张图片

 

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第61张图片

 

 

 

Docker集群管理(docker stsack多服务部署、portanier可视化)_第62张图片

 

 

 

 

 

 

 

 

你可能感兴趣的:(Docker集群管理(docker stsack多服务部署、portanier可视化))