deploy service on swarm
转自:https://www.cnblogs.com/jsonhc/p/7852530.html
swarm集群配置完成后,查看一些基本的信息:
[root@manager1 ~]# docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
manager1 - generic Running tcp://192.168.101.14:2376 v17.09.0-ce
work1 - generic Running tcp://192.168.101.15:2376 v17.10.0-ce
查看节点信息:
[root@manager1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
4ecjeeu8273dzsmfta7u6op9t * manager1 Ready Active Leader
sn7c5u5wtupgt3qpz22o117hl work1 Ready Active
如果需要更新详细的查看节点信息:

[root@manager1 ~]# docker node inspect --pretty manager1
ID: 4ecjeeu8273dzsmfta7u6op9t
Hostname: manager1
Joined at: 2017-11-15 18:28:21.103210247 +0000 utc
Status:
State: Ready
Availability: Active
Address: 192.168.101.14
Manager Status:
Address: 192.168.101.14:2377
Raft Status: Reachable
Leader: Yes
Platform:
Operating System: linux
Architecture: x86_64
Resources:
CPUs: 2
Memory: 3.686GiB
Plugins:
Log: awslogs, fluentd, gcplogs, gelf, journald, json-file, logentries, splunk, syslog
Network: bridge, host, macvlan, null, overlay
Volume: local
Engine Version: 17.09.0-ce
Engine Labels:
- provider=generic
TLS Info:
TrustRoot:
-----BEGIN CERTIFICATE-----
MIIBazCCARCgAwIBAgIUPDGTCzw2cZelyvysFW+jcF3PcQMwCgYIKoZIzj0EAwIw
EzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcxMTE1MTgyMzAwWhcNMzcxMTEwMTgy
MzAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH
A0IABNyMg4cqG1XaXB6g5PbNGxjishle1cPF9t0kn5LbRKwh+IGwDZD2fdbli2bk
9fzVQVWCj3aZzCyyVSFxZ30+cPWjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB
Af8EBTADAQH/MB0GA1UdDgQWBBTElfvEWZqpfIfCYCr+Vn6peYGOPDAKBggqhkjO
PQQDAgNJADBGAiEAh44+/Ns5T+MwiD49jXmIpr7mz/8qyMEvFDtk55j5eQ0CIQCP
HEbLBRkJWxqNs6p5O+emfvIVpFHuy/X8K6tDF7qmiw==
-----END CERTIFICATE----- Issuer Subject: MBMxETAPBgNVBAMTCHN3YXJtLWNh
Issuer Public Key: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3IyDhyobVdpcHqDk9s0bGOKyGV7Vw8X23SSfkttErCH4gbANkPZ91uWLZuT1/NVBVYKPdpnMLLJVIXFnfT5w9Q==

现在利用docker service命令来创建服务:
[root@manager1 ~]# docker service create --name web --replicas 2 nginx
oq2jsjc4zhwtpcwqqd2whj701
Since --detach=false was not specified, tasks will be created in the background.
In a future release, --detach=false will become the default.
其中的参数:--name表示创建服务的名称,--replicas表示创建的副本数,nginx是镜像
查看创建好的service:
[root@manager1 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
oq2jsjc4zhwt web replicated 2/2 nginx:latest
查看service服务在节点的运行情况:
[root@manager1 ~]# docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
rk7pyq7pr49b web.1 nginx:latest work1 Running Running 7 seconds ago
w3orhk7uzvzy web.2 nginx:latest manager1 Running Running 7 seconds ago
如果在创建的过程中出现如下报错:

[root@manager1 ~]# docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
klcan0r46jih web.1 nginx:latest work1 Ready Preparing 3 seconds ago
ypx26zy1gp63 \_ web.1 nginx:latest work1 Shutdown Rejected 3 seconds ago "No such image: nginx:latest@s…"
dy51asan25pf web.2 nginx:latest manager1 Running Running 18 seconds ago

work1节点上没有相应的镜像,导致启动失败,可能的原因之一:work1节点使用的默认的官方镜像源,所以下载缓慢,导致失败,解决办法:将work1节点配置镜像加速器重启docker服务就行
如果需要详细查看service信息:

[root@manager1 ~]# docker service inspect --pretty web ID: oq2jsjc4zhwtpcwqqd2whj701
Name: web
Service Mode: Replicated
Replicas: 2
Placement:
UpdateConfig:
Parallelism: 1
On failure: pause
Monitoring Period: 5s
Max failure ratio: 0
Update order: stop-first
RollbackConfig:
Parallelism: 1
On failure: pause
Monitoring Period: 5s
Max failure ratio: 0
Rollback order: stop-first
ContainerSpec:
Image: nginx:latest@sha256:9fca103a62af6db7f188ac3376c60927db41f88b8d2354bf02d2290a672dc425
Resources:
Endpoint Mode: vip

如果需要访问容器提供的服务,需要为容器进行映射端口:
[root@manager1 ~]# docker service update --publish-add 8080:80 web
web
使用命令update进行对服务的修改,更新等等操作

[root@manager1 ~]# docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
jzq72hlu434g web.1 nginx:latest work1 Running Running less than a second ago
rk7pyq7pr49b \_ web.1 nginx:latest work1 Shutdown Shutdown 1 second ago
ys5voif2df7f web.2 nginx:latest manager1 Running Running 2 seconds ago
w3orhk7uzvzy \_ web.2 nginx:latest manager1 Shutdown Shutdown 3 seconds ago

[root@manager1 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
oq2jsjc4zhwt web replicated 2/2 nginx:latest *:8080->80/tcp
然后进行访问web服务:
这里创建的服务在节点manager1和worl1上(192.168.101.14、192.168.101.15),不指定为什么创建的service一直没有实现负载均衡,一直只是manager1节点能够提供访问,这个问题等待解决
上面可以看出service由manager1、work1两个节点提供,现在将其中的某一个节点进行下线:
[root@manager1 ~]# docker node update --availability drain work1
work1
[root@manager1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
4ecjeeu8273dzsmfta7u6op9t * manager1 Ready Active Leader
sn7c5u5wtupgt3qpz22o117hl work1 Ready Drain
节点的availability的值可以显示节点的状态(active表示活跃在线,drain表示下线不提供服务或者处于维护状态)
将节点wrok1下线后,查看服务的replicas数量:
[root@manager1 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
oq2jsjc4zhwt web replicated 2/2 nginx:latest *:8080->80/tcp
可以看见service web的replicas并没有减少:

[root@manager1 ~]# docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
o0p9zt3su44g web.1 nginx:latest manager1 Running Running about a minute ago
jzq72hlu434g \_ web.1 nginx:latest work1 Shutdown Shutdown about a minute ago
rk7pyq7pr49b \_ web.1 nginx:latest work1 Shutdown Shutdown 6 minutes ago
ys5voif2df7f web.2 nginx:latest manager1 Running Running 6 minutes ago
w3orhk7uzvzy \_ web.2 nginx:latest manager1 Shutdown Shutdown 6 minutes ago

而提供服务的节点由之前的manager1和worlk1共同提供变成了只由节点manager1提供:
现在将work1节点进行更改为active:
[root@manager1 ~]# docker node update --availability active work1
work1
[root@manager1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
4ecjeeu8273dzsmfta7u6op9t * manager1 Ready Active Leader
sn7c5u5wtupgt3qpz22o117hl work1 Ready Active
当work1节点上线后,但是work1并没有抢回提供服务:

[root@manager1 ~]# docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
o0p9zt3su44g web.1 nginx:latest manager1 Running Running 4 minutes ago
jzq72hlu434g \_ web.1 nginx:latest work1 Shutdown Shutdown 4 minutes ago
rk7pyq7pr49b \_ web.1 nginx:latest work1 Shutdown Shutdown 9 minutes ago
ys5voif2df7f web.2 nginx:latest manager1 Running Running 9 minutes ago
w3orhk7uzvzy \_ web.2 nginx:latest manager1 Shutdown Shutdown 9 minutes ago

现在将service的replicas进行伸缩或者扩展,这里将replicas增加到3(现在数量为2)
[root@manager1 ~]# docker service scale web=3
web scaled to 3

[root@manager1 ~]# docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
o0p9zt3su44g web.1 nginx:latest manager1 Running Running 6 minutes ago
jzq72hlu434g \_ web.1 nginx:latest work1 Shutdown Shutdown 6 minutes ago
rk7pyq7pr49b \_ web.1 nginx:latest work1 Shutdown Shutdown 11 minutes ago
ys5voif2df7f web.2 nginx:latest manager1 Running Running 11 minutes ago
w3orhk7uzvzy \_ web.2 nginx:latest manager1 Shutdown Shutdown 11 minutes ago
g0liotj1z9j6 web.3 nginx:latest work1 Running Running 1 second ago

可以看见work1节点又开始为web提供服务了
删除掉上面创建的服务,重新创建新的服务,使用--publish:
[root@manager1 ~]# docker service rm web
web
deploy service on swarm的更多相关文章
- docker探索-使用docker service管理swarm(十一 )
本文转自:https://www.cnblogs.com/atuotuo/p/6265541.html 1.创建一个 Docker service $ docker service create -- ...
- Powershell Deploy Service Fabric Application To Local Cluster
之前写过一篇用 Powershell 部署 Service Fabric Application 到本地集群的随笔,感觉过程有点复杂,这次将流程简化,只需要将应用程序打包,加上配置文件就可以了. ...
- docker 应用-4(swarm模式搭建集群)
swam模式 使用docker的swarm模式,可以很方便的搭建docker engine集群.docker engine是docker 容器的运行时环境,可以在docker engine上build ...
- install docker swarm on centos
ref: https://sonnguyen.ws/install-docker-docker-swarm-centos7/ https://hostadvice.com/how-to/how-to- ...
- docker swarm的应用----docker集群的构建
一.docker安装 这里我们安装docker-ce 的18.03版本 yum -y remove docker 删除原有版本 #安装依赖包 [root@Docker ~]# yum -y i ...
- 第二十一章:deploy and live updates
通常我们开发一个app之后,需要把他们放到对应的应用商店上去以供下载.在此期间,需要经过应用商店的审核,包括初次上传和更新上传.短则需要数天,多则需要几个星期,这对于我们的快速产品迭代和hotfix来 ...
- Prepare and Deploy Windows Server 2016 Active Directory Federation Services
https://docs.microsoft.com/en-us/windows/security/identity-protection/hello-for-business/hello-key-t ...
- Swarm容器集群管理(超详细)
一.Swarm介绍 Swarm是Docker公司自研发的容器集群管理系统, Swarm在早期是作为一个独立服务存在, 在Docker Engine v1.12中集成了Swarm的集群管理和编排功能.可 ...
- docker-compose v3版本命令详解参考
参考和指南 这些主题描述了Compose文件格式的第3版.这是最新的版本. Compose and Docker 兼容性矩阵 有几个版本的Compose文件格式 - 1,2,2.x和3.x.下表是快速 ...
随机推荐
- eclipse调试的时候怎么后退?
原文转载至:https://blog.csdn.net/qq_21262611/article/details/52121270 个人分类: myeclipse 前些天和同事交流调试技巧时,知道了 ...
- RabbitMQ用户角色及权限控制(转)
转载至:https://blog.csdn.net/awhip9/article/details/72123257 2017年05月15日 10:39:26 awhip9 阅读数:3538 ### ...
- 00007 - Linux时间date命令详解
1.命令:date 2.命令功能:date 可以用来显示或设定系统的日期与时间. 3.命令参数 -d<字符串>:显示字符串所指的日期与时间.字符串前后必须加上双引号: -s<字符串& ...
- Linux双网卡绑定
Linux双网卡绑定 作者:Eric 微信:loveoracle11g eth0和eth1绑定为bond0 [root@rac-node1 ~]# cat /etc/sysconfig/network ...
- CentOS的文件属性:命令 ls -l
第一列:有11位 1)第一位表示文件类型 1)l表示链接文件 2)d表示目录 3)-普通文件 4)b块设备 磁盘分区就是这种类型 5)c 串行端口设备文件(字符设备文件),比如键盘,鼠标,打印机,t ...
- 第8章 传输层(7)_TCP连接管理
7. TCP连接管理 7.1 TCP的连接建立 (1)三次握手 ①三次握手过程 A.第1.2次握手,数据包的SYN均为1,表示用于同步.即第1次客户端发起请求,并将自己的连接参数(如接收窗口大小.MS ...
- 腾讯微信被怼,iOS版微信不能打赏了
2017年4月19日,估计很多有着大量粉丝的微信自媒体作者会感到很不爽,因为他们的苹果粉丝再也无法很爽快地.肆意.任性地打赏他们了,按目前iphone手机的占有率,估计打赏率会掉一半以上. 据微信派微 ...
- Apached+resin服务搭建
一.前言 Resin是CAUCHO公司的产品,是一个非常流行的支持servlets 和jsp的引擎,速度非常快.对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言 ...
- jQuery选择器详解
根据所获取页面中元素的不同.可以将jQuery选择器分为:四大类,其中过滤选择器在分为六小类 jQuery选择器 基本选择器 层次选择器 过滤选择器 简单过滤选择器 内容过滤选择器 可见性过滤 ...
- Windows server 2008 R2充当路由器实现网络的互联
1.路由器的工作原理 当IP子网中的一台主机发送IP分组给同一IP子网的另一台主机时,它将直接把IP分组送到网络上,对方就能收到.而要送给不同IP子网上的主机时,它要 选择一个能到达目的子网上的路由器 ...