Docker Swarm资源管理

ぃ、小莉子 提交于 2019-12-01 06:43:44
  • Docker Swarm是docker官方三剑客项目之一,提供docker容器集群服务,是docker官方对容器云生态进行支持 的核心方案。使用它,用户可以将多个docker主机封装为单个大型的虚拟docker主机,快速打造一套容器云平台。

  • 注意:docker 1.12.0+Swarm mode已经内嵌入docker引擎,成为了docker子命令docker swarm,绝大多数用户已经开始使用swarm mode,docker引擎API已经删除Docker Swarm。

  • 基本概念

    • Swarm是使用SwarmKit构建的docker引擎内置(原生)的集群管理和编排工具。使用Swarm集群执勤啊需要了解如下几个概念:

    • 节点

      • 运行docker的主机可以主动初始化一个swarm集群或者加入一个已存在的swarm集群,这样这个运行docker的主机就称为一个swarm集群的节点。

      • 节点分为管理节点和工作节点。管理节点用于swarm集群的管理,docker swarm命令基本只能在管理节点执行。工作节点是任务执行节点,管理节点将服务下发至工作节点执行。

      • 集群中管理节点与工作节点的关系:

    • 服务和任务

      • 任务(Task)是swarm中的最小的调度单位,目前来说就是一个单一的容器。服务(Services)是指一组任务的集合,服务定义了任务的属性。

      • 服务有两种模式:

        • replicated services:按照一定规则在各个工作节点上运行指定个数的任务;
        • global services:每个工作节点上运行一个任务。
      • 两种模式通过docker service create--mode参数指定。

      • 容器、任务、服务的关系:

  • 创建swarm集群

    • 了解swarm集群由管理节点和工作节点组成后,我们来创建一个包含一个管理节点和两个工作节点的最小swarm集群。

    • 初始化集群

      • 使用docker swarm init在本机初始化一个swarm集群

        docker swarm init --advertise-addr 192.168.100.249
        

        如果你的docker主机有多个网卡,拥有多个IP,必须使用--advertise-addr指定IP。

        执行docker swarm init命令的节点自动成为管理节点。

    • 增加工作节点

      • 在另外两台服务器上执行上一步创建管理节点时输出的加入swarm集群的命令

        docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c 192.168.100.24:2377
        
    • 查看集群

      • 在管理节点使用docker node ls查看集群

        docker node ls
        
  • 部署服务

    • 使用docker service命令来管理swarm集群中的服务,该命令只能在管理节点上运行;

    • 新建服务

      • 在创建好的swarm集群中运行一个名为nginx的服务。

        docker service create --replicas 3 -p 80:80 --name nginx nginx:latest
        

        现在我们使用浏览器,输入任意节点IP,即可看到nginx默认页面。

    • 查看服务

      • 使用docker service ls来查看当前swarm集群运行的服务

        docker service ls
        

        使用docker service ps来查看某个服务的详情

        docker service ps nginx
        

        使用docker service logs来查看某个服务的日志

        docker service logs nginx
        
    • 删除服务

      • 使用docker service rm来从swarm集群移除某个服务

        docker service rm nginx
        
  • 资源管理

    • 前面我们学过了利用docker swarm快速搭建一个最小集群,也可以在集群上部署服务,但是会发现swarm中并没有提供统一入口查看节点的资源使用情况。这个时候我们急切的希望有一个图形化管理工具来帮我们管理swarm集群,portainer就是这样的一个工具。

    • portainer是docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、swarm集群和服务等几种管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。

    • portainer集群运行

      • 下载portainer镜像

        # 查询当前有哪些portainer镜像
        docker search portainer
        docker pull portainer/portainer
        
      • 安装portainer

        docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
        
    • portainer配置

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!