Docker Swarm

Docker Swarm是Docker官方项目之一,是使用SwarmKit构建的Docker引擎内置的集群管理和编排工具,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案。使用它,用户可以将多个Docker主机封装为单个大型虚拟Docker主机,快速打造一套容器云平台。

节点

运行Docker的主机可以主动初始化一个Swarm集群或者加入一个已经存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点 node。

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

服务与任务

任务 task 是Swarm中最小的调度单位,目前来说就是一个单一的容器
服务 service 是指一组任务的集合,服务定义了任务的属性

服务有两种模式:

  • replicated services 按照一定规则在各个节点上运行指定个数的任务
  • global services 每个工作节点上运行一个任务

这两种模式可以通过docker service create 的 —mode参数指定

Docker Swarm集群搭建

在Docker服务器上使用 docker swarm init 在初始化一个Swarm集群:

docker swarm init --advertise-addr 192.168.xx.xxx

执行docker swarm init命令的节点自东成为管理节点,同时该命令执行后会打印添加工作节点的命令,将该命令拷贝到工作节点执行后就可以将工作节点添加到Swarm集群中。如果忘记了添加工作节点的命令可以通过 “docker swarm join-token worker” 进行查看。在添加工作节点时可能会添加失败,可以先查看下防火墙,Swarm节点之间通过TCP/UDP进行通信,要确保端口2377,7946,4789是可以通信的,测试环境可以关闭防火墙,重启Docker服务。

这样一个管理节点,两个工作节点的Swarm最小集群就搭建完毕

Swarm集群部署服务

使用docker service命令可以管理Swarm集群中的服务,该命令只能在管理节点运行。
在Swarm集群中创建一个nginx服务,服务创建前确保每个节点:

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

使用 “docker service ls ” 和 “docker service ps ”命令可以查看运行的服务
服务正常启动后输入任意节点的IP都可以访问nginx服务

Swarm图形化资源管理工具

portainer是Docker图形化管理工具,提供了详细的状态显示面板,应用模板快速部署,容器/镜像/数据卷等的基本操作,事件日志的查看显示,Swarm集群和服务的集中管理,以及用户管理等功能

运行portainer:

# 拉取镜像
docker pull portainer/portainer # 运行
docker run -d -p 9000:9000 \
--name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer

portainer容器启动后就可以在浏览访问,首次登录需要设置admin用户密码

portainer容器运行在Swarm管理节点上,选择local连接后就进入以下页面

点击local后进入详细页面,包含了主机上Docker的镜像,容器,数据卷,Swarm集群信息等

Swarm集群信息

服务信息,在这里可以进行服务的创建,扩容,删除等操作

Docker Swarm 资源管理的更多相关文章

  1. Docker进阶-资源管理Swarm+Portainer

    Docker Swarm资源管理 Docker Swarm是Docker官方三剑客项目之一,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案. 使用它,用户可以将多个Do ...

  2. 通过docker-machine和etcd部署docker swarm集群

    本片文章介绍一下 使用docker-machine 搭建docker swarm 集群:docker swarm是docker 官方搭建的容器集群编排工具:容器编排,就是可以使你像使用一太机器一样来使 ...

  3. Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    目录 [TOC] 1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...

  4. (转) Docker swarm - 使用体验 1+2

    背景 凭借敏捷开发部署理念的推行,相信对于很多人来说docker这项容器技术已经并不陌生,Docker 1.12引擎发布了快两个月,新引擎中包含了许多特性.诸如: Swarm模式,容器集群的健康检查, ...

  5. (转) Docker swarm 之介绍与使用

    今天,在站内看到一篇关于Docker Swarm 的文章,非常好,在这里转过来,方便日后查阅 :) 原贴链接: http://www.cnblogs.com/rio2607/p/4445968.htm ...

  6. 从零开始搭建Docker Swarm集群

    从零开始搭建Docker Swarm集群 检查节点Docker配置 1. 打开Docker配置文件(示例是centos 7)vim /etc/sysconfig/docker2. 添加-H tcp:/ ...

  7. docker + swarm 集群

    docker + swarm 集群 导读 Swarm是Docker公司在2014年12月初新发布的容器管理工具.和Swarm一起发布的Docker管理工具还有Machine以及Compose.Swar ...

  8. 基于 Consul 的 Docker Swarm 服务发现

    Docker 是一种新型的虚拟化技术,它的目标在于实现轻量级操作系统的虚拟化.相比传统的虚拟化方案,Docker 虚拟化技术有一些很明显的优势:启动容器的速度明显快于传统虚拟化技术,同时创建一台虚拟机 ...

  9. docker 1.12 版本 docker swarm 集群

    博客已经迁移到 个人博客中 个人博客 更新地址: http://www.xf80.com/2016/10/25/docker-swarm-1.12/ docker 1.12 版本 的新特性 (1)do ...

随机推荐

  1. C++ non-const lvalue reference cannot bind to a temporary

    1. 问题代码 #include <iostream> #include <vector> //注意begin和end形参都声明为引用 bool find_int(std::v ...

  2. Vue项目二、vue环境搭建以及Vue-cli使用及详解

    一.Vue多页面应用的环境搭建 每一次页面跳转的时候,后台服务器都会给返回一个新的html文档,这种类型的网站也就是多页网站,也叫做多页应用. 环境的搭建如下,在页面中引入如下框架 <scrip ...

  3. 内网渗透之权限维持 - MSF

    年初九 天公生 0x034 MSF(美少妇) 启动msf msfconsole 先启动msf依赖的postgresql数据库 初始化数据库 msfdb init (要用普通用户) msf路径 /usr ...

  4. CSS BEM 命名方式

    简介 简易 css 命名方式,减小命名冲突,使得 css 更有组织感和识别感.但如今写 react 项目大多可以忽略对 css 的命名约束了. 官网介绍:http://getbem.com/intro ...

  5. 记录一个引用文件所有js文件的方法

    在项目api声明的时候,避免每次添加新的js都要对应去处理 首先我在项目api文件下新建一个files的文件夹,然后再api文件夹下的index.js这样写: var api = {}; const  ...

  6. mongo请求超时

    no_cursor_timeout=True参数的使用 实例: import pymongo handler = pymongo.MongoClient().db.col with handler.f ...

  7. 【spring springmvc】springmvc使用注解声明控制器与请求映射

    目录 概述 壹:注解说明 贰:实现注解声明控制器与请求映射 一:使用controller 二:配置包扫描与视图解析器 1.配置包扫描 2.配置试图解析器 三:配置部署描述符 1.读取spring-mv ...

  8. Python第一周作业

    import turtle turtle.color('black','red') turtle.pensize(10) turtle.begin_fill() for i in range(5): ...

  9. 用angularjs写的一个简单的grid table

    效果图 用到的工具 1.需要先安装nodejs打开直接安装就好了 2.安装完成后使用 淘宝的源 国内速度快 安装方法 npm install -g cnpm --registry=https://re ...

  10. iOS开发:判断iPhone是否是刘海屏iPhoneX、iPhoneXR、iPhoneXs、iPhoneXs Max等

    保证能判断,呕心沥血,不行切JIJI 方法一 Objective-C // iPhoneX.iPhoneXR.iPhoneXs.iPhoneXs Max等 // 判断刘海屏,返回YES表示是刘海屏 - ...