Docker swarm 笔记

防火墙开放端口:

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode-reverse integer复杂度

1、题目&#xff1a; Reverse digits of an integer. Example1: x 123, return 321Example2: x -123, return -321 Have you thought about this? Here are some good questions to ask before coding. Bonus points for you if you have already thought through this!…

juyter显示决策树图形_决策树分析细分市场

一&#xff0c;前言决策树就是利用图形来表述某项决策的本质&#xff0c;展现了各种选择和不确定因素之间的相互关系。决策树是一个利用像树一样的图形或决策模型的决策支持工具&#xff0c;包括随机事件结果&#xff0c;资源代价和实用性。它是一个算法显示的方法。决策树经常…

测试框架之GTest

gtest是google的一个C/C测试框架&#xff0c;由C实现&#xff0c;可在http://code.google.com/p/googletest/下载其源码及库文件。 gtest用法和cppunit用法差不多&#xff0c;个人比较习惯gtest&#xff0c;使用比cppunit方便些。主要通过宏TEST_F定义测试用例&#xff0c;通过…

idea使用junit测试_在JUnit测试中使用Builder模式

idea使用junit测试这并不是要成为技术含量很高的职位。 这篇文章的目的是为您提供一些指导&#xff0c;以使您的JUnit测试生活更加轻松&#xff0c;使您能够在几分钟内编写复杂的测试场景&#xff0c;并获得具有高度可读性的测试。 单元测试中有两个主要部分&#xff0c;需要编…

LeetCode-best time to buy and sell stock 2 数组

1、问题&#xff1a; Say you have an array for which the i th element is the price of a given stock on day i. Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, buy one and sell one share of the stock mu…

机器人酷跑闯关_机器人酷跑游戏下载-机器人酷跑手机版下载-地之图下载

机器人酷跑是一款机器人跑酷为游戏题材的动作冒险类游戏。在游戏中你将变成一个小机器人&#xff0c;你需要在各个平台上不断的进行跳跃&#xff0c;躲避各种障碍物以及陷阱&#xff0c;让你可以安全的到达终点。感兴趣的话就赶紧下载游戏玩玩吧&#xff01;机器人酷跑游戏简介…

Visual Studio属性配置中使用宏

在学习C语言的时候&#xff0c;我们曾经遇到过一个宏的概念。宏的作用机理本质上是宏的展开&#xff0c;C语言中的宏的用法也有很多种&#xff08;水其实很深...&#xff09;&#xff0c;不过从感觉上来讲&#xff0c;人们大致上会在以下的场景中&#xff0c;利用宏来解决一些窘…

CodeForces - 500A-New Year Transportation(模拟)

New Year is coming in Line World! In this world, there are n cells numbered by integers from 1 to n, as a 1  n board. People live in cells. However, it was hard to move between distinct cells, because of the difficulty of escaping the cell. People wanted…

LeetCode-best time to buy and sell stock 1 数组

1.问题 Say you have an array for which the i th element is the price of a given stock on day i. If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit. …

linq 清除一条数据中的某个字段值_B端通用批量数据导入方案设计

点击上方蓝色字体&#xff0c;关注我B端通用批量数据导入方案设计文 | 3548字估计阅读 | 9分钟引题B端产品经常遇到大量数据录入的需求。如春季招聘完成后&#xff0c;给新招的120个员工建立员工档案&#xff0c;并创建员工帐号。如果逐条将大量的数据录入系统&#xff0c;将花…

Google C++单元测试框架(Gtest)系列教程之一——入门

引言 本文将先介绍单元测试的相关概念&#xff0c;然后引入Google的开源C单元测试框架Gtest&#xff0c;最后通过编译、运行Gtest自带的一个测试样例&#xff0c;介绍如何在Unix/Linux下使用Gtest。 单元测试 说到单元测试&#xff0c;大家应该不会陌生。作为软件开发过程…

luoguP3185 [HNOI2007]分裂游戏 枚举 + 博弈论

每个位置的瓶子中的每个石子是一个独立的游戏 只要计算出他们的\(sg\)值即可 至于方案数&#xff0c;反正不多\(n^3\)暴力枚举即可 反正怎么暴力都能过啊 复杂度\(O(Tn^3)\) #include <cstdio> #include <cstring> #include <iostream> #include <algorit…

opencv图像前景目标提取

1、功能 论文图片处理需要用到简单的前景目标提取&#xff0c;这里采用opencv的grabCut函数&#xff1b; 前期可以采用selectROI获取矩形框&#xff08;需要添加contrib库&#xff09;&#xff0c;也可以手动设定rect&#xff1b; 添加了一个图片批处理操作&#xff0c;glob函数…

内存结构 堆 栈 全局区 常量区 代码区

转载&#xff1a;https://blog.csdn.net/levy1021/article/details/45419381

批量提交 kafka_Kafka精华问答|kafka的使用场景是什么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。作为一种高吞吐量的分布式发布订阅消息系统&#xff0c;有着诸多特性。今天&#xff0c;就让我们一起来看看关于它的精华问答吧&#xff01;1Q&a…

Gtest在vs 2010上的配置

找了好多文章&#xff0c;发现这篇是讲得最简便、正确的&#xff01; 以下为复制&粘贴的&#xff1a; [cpp] view plaincopyVS2010 gtest简易配置 使用一个简单的控制台来演示。 1.下载google test http://code.google.com/p/googletest/downloads/detail?nameg…

Python集合list,tuple,dict,set

Python四中集合list&#xff0c;tuple&#xff0c;dict&#xff0c;set list(有数组越界问题) 创建list&#xff1a;L [Michael, 100, True] 访问list&#xff1a;L[0] 倒序访问&#xff1a;L[-1] 添加新元素&#xff1a;L.append(paul)或者L.insert(0,paul) 删除元素与&#…

jmeter性能分析_使用JMeter和Yourkit进行REST / HTTP服务的性能分析

jmeter性能分析我的上一篇文章描述了如何使用JMeter完成异步REST / HTTP服务的压力测试或负载测试。 但是&#xff0c;运行这样的测试通常表明被测系统不能很好地应对增加的负载。 现在的问题是如何找到瓶颈&#xff1f; 深入研究代码以检测可疑部分可能是一种替代方法。 但是…

JAVA错误:无法从静态上下文中引用非静态变量 this

新学习&#xff1a;构造方法的重载&#xff0c;给成员变量赋值 错误代码&#xff1a; class Student {public static void main(String[] args) {Person p new Person();p.setAge(24);p.setName("杨洋");p.show();System.out.println("Hello World!");}…

datetime建立索引有用吗_超全的数据库建表、SQL、索引规范

背景因为工作岗位的原因&#xff0c;负责制定了关于后端组数据库的规约规范&#xff0c;作为所有产品线的规范&#xff0c;历经几版的修改&#xff0c;最终形成下边的文本&#xff0c;规范在整个后端执行也有大半年的时间&#xff0c;对于整个团队在开发阶段就减少不恰当的建表…