1.部署环境:

centos7
创建三节点的 swarm 集群
swarm-manager 是 manager node : 192.168.1.150
swarm-worker1 和 swarm-worker2 是 worker node: 192.168.1.151,192.168.1.152

2.部署docker

Docker v1.+
安装:https://www.cnblogs.com/hanxiaohui/p/8514941.html
注意:3个节点都需要安装,并且修改docker默认的家目录

3.部署docker-swarm

原文地址: http://www.cnblogs.com/CloudMan6/p/7862254.html

3.1在 swarm-manager 上执行如下命令创建 swarm:

docker swarm init --advertise-addr 192.168.1.150
命令说明:
--advertise-addr 指定与其他 node 通信的地址。
docker swarm init 输出告诉我们:
① swarm 创建成功,swarm-manager 成为 manager node。
② 添加 worker node 需要执行的命令。
③ 添加 manager node 需要执行的命令

3.2 添加worker

如果当时没有记录下 docker swarm init 提示的添加 worker 的完整命令,可以通过以下命令查看
docker swarm join-token worker 上条命令执行的结果 在node上执行。

3.3 查看集群

docker node ls

4.service相关的操作

######创建网络

######创建网络
docker network create -d overlay --attachable my-network #创建overlay网络

######用 Label 控制 Service 的位置

定义lable
docker node update --label-add env=test swarm-worker1
命令说明:
swarm-worker1是node的名字

######查看lable

docker node inspect swarm-worker1 --pretty

######创建service

docker service create -d -p : --mount type=bind,src=/mnt/qmsUpload,dst=/usr/local/src --replicas  --name first-mysql --network my-network  --constraint 'node.labels.env=test' mysqld:5.6
命令说明:
-d 默认是true(这个参数可要可不要)
-p 端口映射 相当于 --publish
--mount 挂载磁盘
--replicas 副本数
--name service名
--network 指定网络
--constraint 指定在哪个work启动副本,需要给节点定义lable
mysqld:5.6 指定镜像

######查看service

docker service inspect first-mysql --pretty

######service副本伸缩

  docker service scale first-mysql= 或 docker service update --replicas
命令说明:
first-mysql是service名,伸缩只要修改数量就行。

######不让manager node运行副本

  默认配置下 manager node 也是 worker node,所以 swarm-manager 上也运行了副本。如果不希望在 manager 上运行 service,可以执行如下命令
docker node update --availability drain swarm-manager
命令说明: swarm-manager是node名,node名 是跟系统的hostname一样的 docker node ls #查看AVAILABILITY列 swarm-manager那台node的 值变为 drain

######删除service

docker service rm web_server  #docker service rm 删除 web_server,service 的所有副本(容器)都会被删除

######从外部访问service

  端口映射
.创建service是有用-p 映射 .后期添加映射
docker service update --publish-add : web_server . curl 集群中任何一个节点的 端口,都能够访问到 web_server

######service 服务发现

  http://www.cnblogs.com/CloudMan6/p/7967419.html

  直接使用 ingress 行不行?ingress是docker-swarm集群建好后就有的
很遗憾,目前 ingress 没有提供服务发现,必须创建自己的 overlay 网络 (在manager上创建)

######滚动更新service

  docker service update --image httpd:2.2. my_web
说明:
--image 指定新的镜像
my_web 是service的名字
步骤:
.停止第一个副本。
.调度任务,选择 worker node。
.在 worker 上用新的镜像启动副本。
.如果副本(容器)运行成功,继续更新下一个副本;如果失败,暂停整个更新过程。 例子:
docker service update --replicas --update-parallelism --update-delay 1m30s my_web #service
增加到六个副本,每次更新两个副本,间隔时间一分半钟。

######回滚更新

docker service update --rollback my_web #快速恢复到更新之前的状态

######replicated mode vs global mode

  globalmode,其作用是强制在每个 node 上都运行一个且最多一个副本
例子:
docker service create \
--mode global \
--name logspout \
--mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock \
gliderlabs/logspout

######健康检查

  http://www.cnblogs.com/CloudMan6/p/8053323.html

docker-swarm笔记的更多相关文章

  1. Docker Swarm 日常运维命令笔记

    之前介绍了Docker管理工具-Swarm部署记录,这里简单总结下Docker Swarm的日常维护命令,以作为平时运维笔记. Swarm作为一个管理Docker集群的工具,首先需要将其部署起来,可以 ...

  2. Docker Swarm Mode 学习笔记(聊聊 replicas)

    在 Swarm 集群中, 创建服务时可以通过设置 --replicas 参数来指定此服务在工作节点上运行的任务数. 示例 这里我们来创建一个 nginx 服务作为示例: version: '3' se ...

  3. Docker Swarm Mode 学习笔记(创建 Swarm 集群)

    Swarm 集群由管理节点与工作节点组成. 初始化集群 使用命令:docker swarm init 如果你的 Docker 主机有多个网卡, 拥有多个 IP 地址, 必须使用 --advertise ...

  4. Docker Swarm Mode 学习笔记 (基本概念)

    ​ Swarm 是使用 SwarmKit 构建的 Docker 引擎内置(原生)的集群管理和编排工具 节点 ​ 运行 Docker 的主机可以主动初始化一个 Swarm 集群 docker swarm ...

  5. docker (centOS 7) 使用笔记3 - docker swarm mode

    1. 什么是docker swarm mode docker engine自带的 容器管理 工具.功能比较早的 docker swarm 更多,且集成在docker engine里. (docker ...

  6. DOCKER 学习笔记8 Docker Swarm 集群搭建

    前言 在前面的文章中,已经介绍如何在本地通过Docker Machine 创建虚拟Docker 主机,以及也可以在本地Windows 创建虚拟主机,也是可以使用的.这一节,我们将继续学习 Docker ...

  7. Docker 系列六(Docker Swarm 项目).

    一.前言 随着互联网快速发展,以及微服务架构的流行,服务器的压力越来越大.上一篇介绍的 Docker Compose 项目,可以将多个容器捏合在一起,实现容器间的通信,比如 Web 项目对 DB.Ca ...

  8. 搭建 Docker Swarm 集群

      准备三台主机 A:192.168.1.5 B:192.168.1.7 C:192.168.1.10   Docker Swarm集群中的节点主机开放以下三个端口 2377端口, 用于集群管理通信 ...

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

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

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

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

随机推荐

  1. Codeforces 1197 E (dp+sort+二分) (Rust)

    原题链接 2300分 大意 俄罗斯套娃,每个有内容半径in和外围半径out in_i<out_i 如果 in_i >= out_j ,那么j可以放在i内 定义残留空间 = 一列嵌套的套娃 ...

  2. Scratch可视化的编程工具

    1.是什么? 在线编程网址 是一个编程软件,但是不涉及编程语言,是针对青少年开发的编程积木模块. 2.软件的目的是什么? 激发青少年对编程的兴趣 3.怎么用呢? 软件内部是很多积木模块,需要明白每块是 ...

  3. 排序算法一:插入排序(Insertion sort)

    最近从网易公开课在看麻省理工学院的公开课<算法导论>,感觉还不错,接下来几篇文章所示学习日记了,不准备对算法细节做过多描述,感兴趣的可以自己去看. 文章分几篇讲经典排序算法,直接上代码,根 ...

  4. JavaScript Sort

    function ArrayList() { var array = []; this.swap = function(index1, index2) { var aux = array[index1 ...

  5. [暑假集训Day3T3]平板涂色

    同样是搜索经典题. 优化并不多,只需在当前步数已经大于目前答案时剪枝就可以了. 此题重点在于如何判断第k个矩形能不能选. 设矩形i的左上坐标为i(squ[i].upx,squ[i].upy),右下角坐 ...

  6. 如何写一个简单的基于 Qt 框架的 HttpServer ?

    httpserver.h #ifndef HTTPSERVER_H #define HTTPSERVER_H #include <QObject> #include <QtCore& ...

  7. html中head示例

    <!DOCTYPE html> <!-- #统一的规范--> <!--类似html这种 ,html标签<html>dasdasd</html>&g ...

  8. 让 Git Bisect 帮助你

    让 Git Bisect 帮助你 英文原文:Letting Git Bisect Help You   Git 提供来很多的工具来帮助我们改进工作流程. bisect 命令就是其中之一, 虽然由于使用 ...

  9. JavaScript 中的 Function.prototype.bind() 方法

    转载自:https://www.cnblogs.com/zztt/p/4122352.html Function.prototype.bind()方法 bind() 方法的主要作用就是将函数绑定至某个 ...

  10. elasticsearch 基础 —— Common Terms Query常用术语查询

    常用术语查询 该common术语查询是一个现代的替代提高了精确度和搜索结果的召回(采取禁用词进去),在不牺牲性能的禁用词. 问题 查询中的每个术语都有成本.搜索"The brown fox& ...