Docker Swarm 是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。

一、基本概念:

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

节点分为管理 (manager) 节点和工作 (worker) 节点。

管理节点用于 Swarm 集群的管理,docker swarm 命令基本只能在管理节点执行(节点退出集群命令 docker swarm leave 可以在工作节点执行)。一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader,leader 通过 raft 协议实现。

工作节点是任务执行节点,管理节点将服务 (service) 下发至工作节点执行。管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点。

二、服务和任务:

任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。

服务 (Services) 是指一组任务的集合,服务定义了任务的属性。服务有两种模式:

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

global services 每个工作节点上运行一个任务

两种模式通过 docker service create 的 --mode 参数指定

三、创建swarm集群:

创建一个最小的swarm集群,1个管理节点、2个工作节点。

docker-machine create -d xhyve --xhyve-boot2docker-url ~/.docker/machine/cache/boot2docker.iso --engine-registry-mirror=https://registry.docker-cn.com manager
docker-machine ssh manager
docker swarm init --advertise-addr 192.168.99.100
docker-machine create -d xhyve --xhyve-boot2docker-url ~/.docker/machine/cache/boot2docker.iso --engine-registry-mirror=https://registry.docker-cn.com worker1
docker-machine ssh worker1
docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.99.100:2377docker-machine create -d xhyve --xhyve-boot2docker-url ~/.docker/machine/cache/boot2docker.iso --engine-registry-mirror=https://registry.docker-cn.com worker2
docker-machine ssh worker2
docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.99.100:2377

四、部署服务

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

新建服务:

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

查看服务:

$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                 PORTS
kc57xffvhul5        nginx               replicated          3/3                 nginx:1.13.7-alpine   *:80->80/tcp

查看某个服务详情:

$ docker service ps nginx
ID                  NAME                IMAGE                 NODE                DESIRED STATE       CURRENT STATE                ERROR               PORTS
pjfzd39buzlt        nginx.1             nginx:1.13.7-alpine   swarm2              Running             Running about a minute ago
hy9eeivdxlaa        nginx.2             nginx:1.13.7-alpine   swarm1              Running             Running about a minute ago
36wmpiv7gmfo        nginx.3             nginx:1.13.7-alpine   swarm3              Running             Running about a minute ago

查看日志:

$ docker service logs nginx
nginx.3.36wmpiv7gmfo@swarm3    | 10.255.0.4 - - [25/Nov/2017:02:10:30 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0" "-"
nginx.3.36wmpiv7gmfo@swarm3    | 10.255.0.4 - - [25/Nov/2017:02:10:30 +0000] "GET /favicon.ico HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0" "-"
nginx.3.36wmpiv7gmfo@swarm3    | 2017/11/25 02:10:30 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 10.255.0.4, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.99.102"
nginx.1.pjfzd39buzlt@swarm2    | 10.255.0.2 - - [25/Nov/2017:02:10:26 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0" "-"
nginx.1.pjfzd39buzlt@swarm2    | 10.255.0.2 - - [25/Nov/2017:02:10:27 +0000] "GET /favicon.ico HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0" "-"
nginx.1.pjfzd39buzlt@swarm2    | 2017/11/25 02:10:27 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 10.255.0.2, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.99.101"

删除服务:

$ docker service rm nginx

五、使用compose文件,一次部署多个服务

部署服务使用 docker stack deploy,其中 -c 参数指定 compose 文件名。

$ docker stack deploy -c docker-compose.yml wordpress

备注:

参考文章:http://docker_practice.gitee.io/

docker swarm 实战相关推荐

  1. Docker swarm 实战-部署wordpress

    Docker swarm 实战-部署wordpress 创建一个overlay的网络 docker network create -d overlay demo6imq8da3vcwvj2n499k4 ...

  2. Docker Swarm 命令

    docker service ps 命令  docker node 命令  docker stack ps 命令  docker swarm unlock 命令  Docker Command 命令 ...

  3. Docker实战 (docker swarm的应用,docker集群的构建,在docker集群中部署服务)

    Docker实战 ----docker swarm的应用,docker集群的构建,在docker集群中部署服务 转载来源:https://blog.csdn.net/No_red/article/de ...

  4. Docker容器化实战第七课 容器编排Docker Compose、Docker Swarm 和 Kubernetes

    19 如何使用 Docker Compoe 解决开发环境的依赖? 前两个模块,我们从 Docker 的基本操作到 Docker 的实现原理,为你一步一步揭开了 Docker 神秘的面纱.然而目前为止, ...

  5. 微服务实战之春云与刀客(四)—— docker swarm 集群实战

    概述 docker swarm 是一个非常简单的docker 原生集群部署环境.在docker swarm 出来之前,要搭建一个docker 集群需要复杂的网络运维和配置能力,而docker swar ...

  6. docker实战2 (docker swarm的应用,docker集群的构建,在docker集群中部署服务的创建与更新)

    前言: 在之前曾写过一个关于docker集群创建的教程,但是不够深入,只是停留到集群的初始化和节点加入上,这次具体到服务,并详细讲解其中的原理.而且总结了很多自己做的过程中所踩过的很多坑(比如镜像的d ...

  7. docker swarm集群监控方案cAdvisor+InfluxDB+Grafana实战

    docker swarm集群的监控方案很多,cAdvisor+InfluxDB+Grafana方案功能强大灵活.最重要的是这个方案开源.免费.易用,是不花钱版监控方案.参考文档:https://bot ...

  8. Docker Swarm 初步认识 及 集群搭建

    [Docker那些事]系列文章 docker 安装 与 卸载 centos Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT ...

  9. docker swarm实践爆心肝总结全在这里,火速收藏!!!

    Docker Swarm 快速入门 "这是一个非常棒的docker swarm学习历程.我把一个国外的docker精简实践教学进行了简略的翻译,比起国内博客学习的总结性文章,它更注重让小白在 ...

最新文章

  1. 【Python】SyntaxError: unexpected EOF while parsing
  2. nfc reader 卡密_红外NFC+50倍变焦,一款被严重低估的王牌?
  3. iOS---GCD的三种常见用法
  4. android webview 抖动,【报bug】关于webview中上下滑动出现抖动的问题
  5. [zz]Ubuntu下使用Eclipse和PyDev搭建完美Python开发环境
  6. HoloLens开发手记-凝视 Gaze
  7. 【简易教程】人体时钟 ホネホネ・クロック [時計・ブログパーツ]
  8. OpenCV-通道分离cv::split
  9. 使用MEMCACHED的思考
  10. MATLAB 软件安装与无法打开问题
  11. PCS7安装时提示please insert the following CD-ROM: SIMTIC PCS7 V?.? SP1 DVD 2/2
  12. 微带滤波器摘要_微带低通滤波器的设计
  13. 音:Android音频系统之音频框架
  14. systemctl: command not found
  15. docker rabbit Management API returned status code 500 -
  16. 打造属于自己的量化投资系统9——支持向量机SVM算法在股票预测涨跌中应用
  17. 基于Google Earth Engine的Landsat单窗算法地表温度(LST)反演
  18. Java实现自动输入账号密码登陆软件
  19. POI设置word 2007文本下划线样式及文字底纹
  20. electron在线升级更新的两种方式(整体更新和部分更新)及我是如何实现electron在线升级热更新功能的?(企业级项目已上线)

热门文章

  1. spring mvc 和ajax异步交互完整实例
  2. 安装System Center 2012 R2 数据库
  3. CreateThread线程函数
  4. 删除某个路径下的文件夹
  5. 管理exchange 2010用户邮箱本地移动请求
  6. 前后端分离后 前端获得session数据_机器学习模型部署--打通前后端任督二脉
  7. golang 三种接口的定义方式
  8. 暴露的全局方法_史上最便捷搭建 ZooKeeper 服务器的方法
  9. 会动的图解!GMP模型里为什么要有P?背后的原因让人暖心
  10. windows下mongoDB的环境配置