文档章节

Docker Swarm资源管理

爱宝贝丶
 爱宝贝丶
发布于 07/23 08:23
字数 1162
阅读 72
收藏 0
  • 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配置

© 著作权归作者所有

爱宝贝丶

爱宝贝丶

粉丝 340
博文 136
码字总数 456051
作品 0
武汉
程序员
私信 提问
Docker 集群Swarm创建和Swarm Web管理

关于Docker Swarm更多的介绍请查看《Docker管理工具-Swarm部署记录》 一、环境配置 1、安装环境 # cat /etc/redhat-releaseCentOS Linux release 7.3.1611 (Core) docker version Client:Ve...

蜷缩的蜗牛
2017/08/20
0
0
Docker Swarm v1.2.2 发布

Docker Swarm v1.2.2 发布了。 Docker Swarm是一个Dockerized化的分布式应用程序的本地集群,它是在Machine所提供的功能的基础上优化主机资源的利用率和容错服务。具体来 说,Docker Swarm支...

oschina
2016/05/16
1K
6
Docker(六):Docker 三剑客之 Docker Swarm

实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行。然而,面对 Kubernetes, Mesos 以及 Swarm 等众多容器集群系统,我们该如何选择呢?它们之中,Swarm...

纯洁的微笑
2018/04/19
0
0
Docker Swarm

Docker Swarm是一个Dockerized化的分布式应用程序的本地集群,它是在Machine所提供的功能的基础上优化主机资源的利用率和容错服务。具体来说,Docker Swarm支持用户创建可运行Docker Daemon...

小编辑
2015/02/27
6.4K
2
Docker Swarm 中最重要的概念- 每天5分钟玩转 Docker 容器技术(94)

从主机的层面来看,Docker Swarm 管理的是 Docker Host 集群。所以先来讨论一个重要的概念 - 集群化(Clustering)。 服务器集群由一组网络上相互连接的服务器组成,它们一起协同工作。一个集...

CloudMan6
2017/11/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Python查询比特币实时价格

在本文中我们将学习如何使用使用coinmarketcap提供的比特币行情API,编写Python程序来获取像比特币、莱特币或以太币之类的区块链数字货币的实时行情/实时价格。 1、比特币行情API调用代码 我...

汇智网教程
22分钟前
2
0
爬虫平台Crawlab核心原理--自动提取字段算法

⚠注意: 可配置爬虫现在仅在Python版本(v0.2.1-v0.2.4)可用,在最新版本Golang版本(v0.3.0)还暂时不可用,后续会加上,请关注近期更新 背景 实际的大型爬虫开发项目中,爬虫工程师会被要...

tikazyq
40分钟前
3
0
postman批量测试

postman批量调用: 先单个调用,成功了 再save为collection 再点击三角形,点击run 设置1000次,run就可以 见《postman批量测试.docx》

Danni3
47分钟前
8
0
js 对象操作 js 对象和对象赋值 去除关联性 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象

当我们在项目需要 复制一个对象到另一个对象并且 被复制的对象不能受复制后的对象的影响。 我先总结下 我们哪些方法可以复制对象 // 直接赋值var obj1 = { a: 1 };var obj2 = obj1;...

xiaogg
48分钟前
7
0
Go微服务全链路跟踪详解

在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪。 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链。 该ID称为C...

倚天码农
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部