防火墙开放端口:

  • TCP port 2377为集群管理通信
  • TCP and UDP port 7946 为节点间通信
  • UDP port 4789 为网络间流量

创建attachable network

docker network create --driver=overlay --attachable mynet-core

查看网络

docker network ls

  

在manager1上创建swarm集群:

$ docker swarm init --advertise-addr 192.168.0.251

--advertise-addr选项表示管理节点公布它的IP是多少。其它节点必须能通过这个IP找到管理节点。

运行docker info来查看当前swarm集群的状态:

$ docker info 

查看节点信息

$  docker node ls

查看加入节点指令 

$ docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-3bxotwbwtvhtzawo548h738h2rjs4s8hgj8ah6cxfydb775grz-cjzodty09sti7eb5inmdg4err 192.168.0.251:2377

加入节点

ssh到worker2 ,使主机2 加信集群

$ docker swarm join --token SWMTKN-1-3bxotwbwtvhtzawo548h738h2rjs4s8hgj8ah6cxfydb775grz-cjzodty09sti7eb5inmdg4err 192.168.0.251:2377

在swarm集群上部署一个服务

$ docker service create --network mynet-core --replicas 1 --name gpsserver -p 10111:10111 -p 15678:15678  --mode global --update-delay 10s gpsserver:1.0

和运行容器一样,可绑定多个端口

--name表明服务名字是gpsserver

--replicas 表示期望1个服务实例

--mode 模式 replicated or global(默认replicated,如果设置为global,无需设置 --replicas ,每个节点下,都会运行一个task)

--publish published=53,target=53,protocol=udp,mode=host (绑定端口不使用简写,使用host模式,端口不转发,不使用swarm的负载均衡功能,配合nginx等第三方工具)

--network mynet-core attachable network是一个非常重要的特性。你最好使用它,否则docker run创建的容器将无法接入Swarm集群的网络。

gpsserver:1.0 镜像与标签

在服务部署阶段就指定滚动升级策略

  • --update-delay配置了更新服务的时间间隔,你可以指定时间T为秒是Ts,分是Tm,或时是Th,所以10m30s就是10分30秒的延迟
  • 默认的调度器scheduler一次更新一个任务.你可以传入参数--update-parallelism来配置调度器同时更新的最大任务数量
  • 默认的当一个更新任务返回RUNNING状态后,调度器才调度另一个更新任务,直到所有任务都更新了。如果更新过程中任何任务返回了FAILED,调度器就会停止更新。你可以给命令docker service create or docker service update配置配置--update-failure-action,来配置这个行为。

至此所有节点都可访问服务了

查看运行的服务

 $ docker service ls

  

查看优化显示的服务详情

$ docker service inspect --pretty 060zo3u0g3mj

060zo3u0g3mj是服务id

查看到哪些节点在运行该服务实例

$ docker service ps 060zo3u0g3mj

缩放一个或多个复制服务

$ docker service scale 060zo3u0g3mj=2

删除服务

$ docker service rm 060zo3u0g3mj

动态更新服务

$ docker service update --image gpsserver:2.0 gpsserver(或服务id)

使用--mount-add--mount-rm选项可以添加或删除服务的bind-mount或卷

回滚上个一个配置或版本

$ docker service update --rollback gpsserver

  

#创建nginx服务

#docker pull hub.test.com:5000/almi/nginx:0.1 #下载私有仓库镜像
docker service create --name nginx  --replicas 2 --publish 80:80 hub.test.com:5000/almi/nginx:0.1
#--network=swarm_test #replicas 2 创建2个容器,hub.test.com为私有仓库

#查看swarm集群中的服务

docker service ls
docker service ps nginx

#kill其中一个容器

docker kill 96e6bccc2209
#等会自动启动一个新的容器

#修改服务实例数量为3

docker service scale nginx=3

#删除nginx服务

docker service rm nginx

#删除swarm节点

docker swarm leave --force  #node
docker node rm -f <node>    #manager

#docker swarm 常用命令

docker swarm init               #初始化集群
docker swarm join-token worker  #查看工作节点的 token
docker swarm join-token manager #查看管理节点的 token
docker swarm join               #加入集群中

docker swarm update --task-history-limit 2  # 更改任务历史记录保留限制

  

#docker node 常用命令

docker node ls      #查看所有集群节点
docker node rm      #删除某个节点(-f强制删除)
docker node inspect ##查看节点详情
docker node demote  #节点降级,由管理节点降级为工作节点
docker node promote #节点升级,由工作节点升级为管理节点
docker node update  #更新节点
docker node ps      #查看节点中的 Task 任务

  

#docker service 常用命令

docker service create   #部署服务
docker service inspect  #查看服务详情
docker service logs     #产看某个服务日志
docker service ls       #查看所有服务详情
docker service rm       #删除某个服务(-f强制删除)
docker service scale    #设置某个服务个数
docker service update   #更新某个服务

  

#++++++++++++++++++++++++++++++

#Docker Stack 部署多个集群服务

#docker stack使用编排文件docker-compose.yml批量部署服务

#创建编排文件docker-compose.yml

mkdir mydocker ; cd mydocker
echo "#  docker stack
version: '3'
services:mynginx:image: hub.test.com:5000/almi/nginx:0.1ports:- "8081:80"deploy:replicas: 3busybox:image: hub.test.com:5000/busybox:latestvolumes:- "/var/run/docker.sock:/var/run/docker.sock"deploy:replicas: 2
#">docker-compose.yml

#使用docker-compose.yml批量创建服务

docker stack deploy -c docker-compose.yml deploy-test
docker stack ps deploy-test

#容器名称 deploy-test_<service名称>.随机后缀

#docker stack 常用命令

docker stack deploy   #部署新的堆栈或更新现有堆栈
docker stack ls   #列出现有堆栈
docker stack ps   #列出堆栈中的任务
docker stack rm   #删除堆栈
docker stack services   #列出堆栈中的服务
docker stack down   #移除某个堆栈(不删数据)

挂载目录, mount 

docker service create --mount type=bind,target=/container_data/,source=/host_data/

例 - 本地目录: target = 容器里面的路径, source = 本地硬盘路径

# docker service create --name nginx --mount type=bind,target=/usr/share/nginx/html/,source=/opt/web/ --replicas 2 --publish 80:80/tcp nginx

docker service create --mount type=volume,source=<VOLUME-NAME>,target=<CONTAINER-PATH>,volume-driver=<DRIVER>,

例 - 挂载volume卷: source = volume 名称 , traget = 容器里面的路径

# docker service create --name nginx --mount type=volume,source=myvolume,target=/usr/share/nginx/html,volume-driver=local --replicas 2 --publish 80:80/tcp nginx

  

转载于:https://www.cnblogs.com/lucoo/p/10147946.html

Docker swarm 笔记相关推荐

  1. docker swarm笔记-Swam mode教程

    转载请注明出处 http://www.paraller.com 原文排版地址 点击获取更好阅读体验 ingress network ``` 参考网站 Getting started with swar ...

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

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

  3. Docker基础讲解狂神笔记:容器数据卷,docker compose,docker swarm(2/2)未修订版欢迎留言补漏

    L06 容器数据卷 相对于01-05难度加大 什么是容器数据卷 Docker理念:将应用和环境打包成一个镜像! 程序要保存数据,数据并不能放在容器里面,因为一旦数据放在容器,误操作删除掉容器,数据也随 ...

  4. docker学习笔记(二)docker常用命令

    参考:汤小洋老师的教学视频 docker学习笔记(一)[docker 介绍.卸载.安装.配置加速] docker学习笔记(三)镜像 docker学习笔记(四)使用docker搭建环境 docker学习 ...

  5. 狂神docker学习笔记

    狂神docker(基础+进阶)-学习笔记 狂神说docker 三体:弱小和无知不是生存的障碍,傲慢才是. 从基础到进阶,每个视频都有认真看,做笔记和练习,以此篇分享整个学习过程 画图网页 docker ...

  6. 狂神 Docker学习笔记 从基础到进阶 一步到位

    Docker 学习笔记 感谢狂神的分享.附上B站视频链接. https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=92256 ...

  7. docker学习笔记(初阶)

    笔记整理自狂神:Docker最新超详细版教程通俗易懂 Docker学习整体框架: Docker概述 Docker安装 Docker命令 镜像命令 容器命令 操作命令 Docker镜像! 容器数据卷! ...

  8. Docker学习笔记01

    Docker学习笔记01 Docker学习 Docker的概述 Docker的安装 Docker的命令 镜像命令 容器命令 操作命令 ... Docker镜像 容器数据卷 DockerFile Doc ...

  9. 在 Docker 中运行 MySQL:多主机网络下 Docker Swarm 模式的容器管理

    本文将以多主机网络环境为基础,探讨如何利用内置编排工具 Docker Swarm 模式对各主机上的容器加以管理. Docker Engine – Swarm 模式 在多台主机之上运行 MySQL 容器 ...

最新文章

  1. 树莓派的Perl 遨游之旅
  2. rabbitmq的启动命令和springboot整合使用rabbitmq
  3. 浅谈 G1 GC 日志格式
  4. 后台服务系统之搭建ZooKeeper注册中心
  5. 利用java求积分(定积分和无穷限积分)
  6. visual2019没有勾选的在如何加入_发票管理系统完成升级,勾选认证平台改头换面,你所有的问题都在这里!...
  7. 为每一个应用程序池单独设置aspnet.config配置文件
  8. 男单巅峰战林丹力克索尼 再度封王成功卫冕
  9. java 标准_Java标准注解
  10. 【DevOps】在CentOS中安装Rancher2,并配置kubernetes集群
  11. Bootstrap---dateTimePicker时间控件配置与应用
  12. 测试基本理论-看这篇就够了
  13. 常用会计科目名词解释
  14. 工控行业什么时候用c语言,工控工程师需要掌握的知识
  15. java有理数类的封装_java-有理数类的设计
  16. 浅谈springboot和VUE整合PageHelper和element.eleme实现分页查询
  17. android系统美化app,手机主题App哪个好用?安卓手机主题App推荐
  18. 模拟Get、Post请求
  19. 8T磁盘阵列文件存储服务器 威联通,NAS私有云老司机折腾体验记 篇八:QNAP 威联通TR-004磁盘阵列外接盒使用教程...
  20. C# Dictionary源码解析

热门文章

  1. 电商系统的商品流水记录
  2. linux 端口tnpl,利用Python找出9个连续的空闲端口
  3. axure元件库 文件上传_手把手教你打造一套属于产品经理自己的元件库
  4. 查询varchar实际大小_微服务和VUE(11): mybatis 动态查询
  5. php数组按时间排序,按日期时间在PHP中对数组中的数组进行排序
  6. valid floating point value什么意思_为什么 0.1 + 0.2 = 0.300000004?
  7. apc php7,深入解析php之apc
  8. C 迭代器iterator的实现原理
  9. 如何写一个简单的node.js C 扩展
  10. python第一条入门程序_Python语言函数代码的执行流程