容器技术|Docker三剑客之docker-swarm

作者 : 开心源码 本文共16259个字,预计阅读时间需要41分钟 发布时间: 2022-05-12 共219人阅读

docker-swarm简介

Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机笼统为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较相似,但是更加轻,具备的功能也较kubernetes更少少量。

swarm集群提供给客户管理集群内所有容器的操作接口与使用一台Docker主机基本相同。

Swarm集群目前有两个版本:V1、V2

1、Swarm v1它是master-slave架构。需要通过服务发现来选举出管理节点,其它各个节点通过运行agent来接受管理节点的统一管理

2、Swarm v2集群是自动通过Raft协议分布式选举出管理节点,不需要配置发现服务,从而避免发现服务的单点故障问题。且它自带了DNS负载均衡和对外部负载均衡机制的支持

Swarm的基本架构如下图所示

Swarm少量概念说明

1、Swarm

使用swarmkit嵌入docker Engine中的集群管理和编排功能。docker容器初始化启动的一种模式

2、Node

节点,是一个已加入到docker swarm集群中的一个容器实例。

3、Service

服务主要是在工作节点上执行任务,创立服务时,需要指定容器的镜像。

4、Task

任务是在容器中执行的命令

Swarm 工作方式

1、节点

2、服务、任务、容器

3、任务与调度

4、服务副本与全局服务

Swarm 调度策略

Swarm在scheduler节点(leader 节点)运行容器的时候,会根据指定的策略来计算最适合运行容器的节点,目前支持的策略有:spread, binpack, random.

1)Random

顾名思义,就是随机选择一个 Node 来运行容器,一般用作调试用,spread 和 binpack 策略会根据各个节点的可用的 CPU, RAM 以及正在运行的容器的数量来计算应该运行容器的节点。

2)Spread

在同等条件下,Spread 策略会选择运行容器最少的那台节点来运行新的容器,binpack 策略会选择运行容器最集中的那台机器来运行新的节点。使用 Spread 策略会使得容器会均衡的分布在集群中的各个节点上运行,一旦一个节点挂掉了只会损失少部分的容器。

3)Binpack

Binpack 策略最大化的避免容器碎片化,就是说 binpack 策略尽可能的把还未使用的节点留给需要更大空间的容器运行,尽可能的把容器运行在一个节点上面。

Swarm Cluster模式的特性

1)批量创立服务

建立容器之前先创立一个 overlay 的网络,用来保证在不同主机上的容器网络互通的网络模式

2)强大的集群的容错性

当容器副本中的其中某一个或者某几个节点宕机后,cluster 会根据自己的服务注册发现机制,以及之前设定的值–replicas n,在集群中剩余的空闲节点上,重新拉起容器副本。整个副本迁移的过程无需人工干预,迁移后本来的集群的 load balance 仍旧好使!

不难看出,docker service 其实不仅仅是批量启动服务这么简单,而是在集群中定义了一种状态。Cluster 会持续检测服务的健康状态并维护集群的高可用性。

3)服务节点的可扩展性

Swarm Cluster不光只是提供了优秀的高可用性,同时也提供了节点弹性扩展或者缩减的功能。当容器组想动态扩展时,只要通过 scale参数就可复制出新的副本出来。仔细观察的话,可以发现所有扩展出来的容器副本都 run 在原价的节点下面,假如有需求想在每台节点上都 run 一个相同的副本,方法其实很简单,只要要在命令中将”–replicas n”更换成”–mode=global”就可!复制服务(–replicas n)将一系列复制任务分发至各节点当中,具体取决于您所需要的设置状态,例如“–replicas 3”。全局服务(–mode=global)适用于集群内一律可用节点上的服务任务,例如“–mode global”。假如大家在 Swarm 集群中设有 7 台 Docker 节点,则一律节点之上都将存在对应容器。

4)调度机制

所谓的调度其主要功能是 cluster 的 server 端去选择在哪个服务器节点上创立并启动一个容器实例的动作。它是由一个装箱算法和过滤器组合而成。每次通过过滤器(constraint)启动容器的时候,swarm cluster 都会调用调度机制挑选出匹配束缚条件的服务器,并在这上面运行容器。

Swarm cluster的创立过程

1)发现 Docker 集群中的各个节点,收集节点状态、角色信息,并监视节点状态的变化

2)初始化内部调度(scheduler)板块

3)创立并启动 API 监听服务板块

一旦创立好这个 cluster,即可以用命令 docker service 批量对集群内的容器进行操作,在启动容器后,docker 会根据当前每个 swarm 节点的负载判断,在负载最优的节点运行这个 task 任务,用”docker service ls” 和”docker service ps + taskID”可以看到任务运行在哪个节点上。容器启动后,有时需要等待一段时间才能完成容器创立。

Swarm命令行说明

docker?swarm:集群管理

init#初始化集群

join#将节点加入集群

join-token#管理加入令牌

leave#从集群中删除某个节点,强制删除加参数–force?

update#升级集群

unlock#解锁集群

docker?node:节点管理,

demote#将集群中一个或者多个节点降级

inspect#显示一个或者多个节点的详细信息

ls#列出集群中的节点

promote#将一个或者多个节点提升为管理节点

rm#从集群中删除中止的节点,–force强制删除参数

ps#列出一个或者多个节点上运行的任务

update#升级节点

docker?service:服务管理,

create#创立一个新的服务

inspect#列出一个或者多个服务的详细信息

ps#列出一个或者多个服务中的任务信息

ls#列出服务

rm#删除一个或者多个服务

scale#扩展一个或者多个服务

update#升级服务

docker?stack/deploy:实验特性,用于多应用部署

安装布署swarm集群服务

1、修改主机名,配置hosts文件

[root@manager?~]#?cat?>>/etc/hosts<<EOF

192.168.22.177manager

192.168.22.175node1

192.168.22.178node2

EOF

[root@manager?~]#?tail?-3?/etc/hosts

192.168.22.177manager

192.168.22.175node1

192.168.22.178node2

[root@manager?~]#?ping?node1

PINGnode1(192.168.22.175)?56(84)?bytes?of?data.

64?bytesfromnode1(192.168.22.175):?icmp_seq

=1ttl=64time=3.64ms

64bytesfromnode1(192.168.22.175):?icmp_seq=2ttl=64time=1.64ms

^C

—?node1?ping?statistics?—

2packets?transmitted,2received,0%?packet?loss,?time1006ms

rtt?min/avg/max/mdev?=1.648/2.644/3.641/0.997ms

[root@manager?~]#?ping?node2

PINGnode2(192.168.22.178)?56(84)?bytes?of?data.

64?bytesfromnode2(192.168.22.178):?icmp_seq

=1ttl=64time=9.70ms

64bytesfromnode2(192.168.22.178):?icmp_seq=2ttl=64time=1.95ms

^C

—?node2?ping?statistics?—

2packets?transmitted,2received,0%?packet?loss,?time1003ms

rtt?min/avg/max/mdev?=1.951/5.826/9.701/3.875ms

#node1?node2配置同上一致就可

2、安装docker环境

具体安装过程参考前面的文章

配置docker

[root@manager?~]#?vim?/etc/sysconfig/docker

#?/etc/sysconfig/docker

#?Modify?these?options?if?you?want?to?change?the?way?the?docker?daemon?runs

OPTIONS=’-H?0.0.0.0:2375?-H?unix:///var/run/docker.sock?–selinux-enabled?–log-driver=journald?–signature-verification=false’

#所有节点加上上面标记的部分,开启2375端口

[root@manager?~]#?systemctl?restart?docker

[root@manager?~]#?ps?-ef|grep?docker

root119811110:55?00:00:00/usr/bin/dockerd-current?–add-runtime?docker-runc=/usr/libexec/docker/docker-runc-current?–default-runtime=docker-runc?–exec-opt?native.cgroupdriver=systemd?–userland-proxy-path=/usr/libexec/docker/docker-proxy-current?–init-path=/usr/libexec/docker/docker-init-current?–seccomp-profile=/etc/docker/seccomp.json?-H?0.0.0.0:2375?-H?unix:///var/run/docker.sock?–selinux-enabled?–log-driver=journald?–signature-verification=false–storage-driver?overlay2

root1198611981010:55?00:00:00/usr/bin/docker-containerd-current?-lunix:///var/run/docker/libcontainerd/docker-containerd.sock?–metrics-interval=0–start-timeout2m?–state-dir?/var/run/docker/libcontainerd/containerd?–shim?docker-containerd-shim?–runtime?docker-runc?–runtime-args?–systemd-cgroup=true

root1207611823010:55pts/000:00:00grep?–color=auto?docker

[root@manager?~]#?lsof?-i?:2375

COMMAND?????PID?USER???FD???TYPE?DEVICE?SIZE/OFF?NODE?NAME

dockerd-c11981root5u??IPv6418290t0TCP?*:2375(LISTEN)

3、所有节点下载swarm镜像文件

[root@manager?~]#?docker?pull?swarm

Using?default?tag:?latest

Trying?to?pull?repository?docker.io/library/swarm?…

latest:?Pulling?from?docker.io/library/swarm

d85c18077b82:?Pull?complete?

1e6bb16f8cb1:?Pull?complete?

85bac13497d7:?Pull?complete?

Digest:?sha256:406022f04a3d0c5ce4dbdb60422f24052c20ab7e6d41ebe5723aa649c3833975

Status:?Downloaded?newer?image?for?docker.io/swarm:latest

[root@manager?~]#?docker?images

REPOSITORY???????TAG??????IMAGE?ID??????CREATED??????SIZE

docker.io/swarm??latest???ff454b4a0e84??12?days?ago??12.7?MB

4、创立swarm并初始化

[root@manager?~]#?docker?swarm?init?–advertise-addr?192.168.22.177

Swarm?initialized:?current?node?(elyfa6h1lx5o2s98une5vas4x)isnow?a?manager.

To?add?a?worker?tothisswarm,?run?the?following?command:

docker?swarm?join?\

–token?SWMTKN-1-32h92m334z80z270d4duqdc3ysl1oyrjmxe1upyyfjyln12xxa-4gm603mczorxgh6751n5q7jya?\

192.168.22.177:2377

To?add?a?manager?tothisswarm,?run’docker?swarm?join-token?manager’andfollow?the?instructions.

#执行上面的命令后,当前的服务器就加入到swarm集群中,同时会产生一个唯一的token值,其它节点加入集群时需要用到这个token。

#–advertise-addr?表示swarm集群中其它节点使用后面的IP地址与管理节点通讯,上面也提醒了其它节点如何加入集群的命令。

5、查看下当前的信息

[root@manager?~]#?docker?info

Containers:?0

Running:?0

Paused:?0

Stopped:?0

Images:?1

Server?Version:?1.13.1

Storage?Driver:?overlay2

Backing?Filesystem:?xfs

Supports?d_type:?true

Native?Overlay?Diff:?true

Logging?Driver:?journald

Cgroup?Driver:?systemd

Plugins:?

Volume:?local

Network:?bridge?host?macvlan?null?overlay

**Swarm:?active

NodeID:?elyfa6h1lx5o2s98une5vas4x

Is?Manager:?true

ClusterID:?vi716cgvw33gzicrfqopasf9p

Managers:?1

Nodes:?1

Orchestration:

Task?History?Retention?Limit:?5

Raft:

Snapshot?Interval:?10000

Number?of?Old?Snapshots?to?Retain:?0

Heartbeat?Tick:?1

Election?Tick:?3

Dispatcher:

Heartbeat?Period:?5?seconds

CA?Configuration:

Expiry?Duration:?3?months

Node?Address:?192.168.22.177

Manager?Addresses:

192.168.22.177:2377

Runtimes:?docker-runc?runc

Default?Runtime:?docker-runc

Init?Binary:?/usr/libexec/docker/docker-init-current

containerd?version:??(expected:?aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1)

runc?version:?e9c345b3f906d5dc5e8100b05ce37073a811c74a?(expected:?9df8b306d01f59d3a8029be411de015b7304dd8f)

init?version:?5b117de7f824f3d3825737cf09581645abbe35d4?(expected:?949e6facb77383876aeff8a6944dde66b3089574)

Security?Options:

seccomp

WARNING:?You’re?not?using?the?default?seccomp?profile

Profile:?/etc/docker/seccomp.json

Kernel?Version:?3.10.0-693.el7.x86_64

Operating?System:?CentOS?Linux?7?(Core)

OSType:?linux

Architecture:?x86_64

Number?of?Docker?Hooks:?3

CPUs:?1

Total?Memory:?2.238?GiB

Name:?manager

ID:?653Y:7CME:GFPW:35SX:IGZL:UJP7:YSPZ:4OMV:J4EV:Z6FS:WFW2:YYHS

Docker?Root?Dir:?/var/lib/docker

Debug?Mode?(client):?false

Debug?Mode?(server):?false

Registry:?https://index.docker.io/v1/

WARNING:?bridge-nf-call-ip6tables?is?disabled

Experimental:?false

Insecure?Registries:

127.0.0.0/8

Live?Restore?Enabled:?false

Registries:?docker.io?(secure)

[root@manager?~]#?docker?node?ls

ID???????????????????????????HOSTNAME??STATUS??AVAILABILITY??MANAGER?STATUS

elyfa6h1lx5o2s98une5vas4x?*??manager???Ready???Active????????Leader

#当前节点的信息,这个*表示当前连接在这个节点上

6、将node1,node2加入到集群中

[root@node1?~]#??docker?swarm?join?–token?SWMTKN-1-32h92m334z80z270d4duqdc3ysl1oyrjmxe1upyyfjyln12xxa-4gm603mczorxgh6751n5q7jya?192.168.22.177:2377

This?node?joined?a?swarmasa?worker.

[root@node2?~]#?docker?swarm?join?–token?SWMTKN-1-32h92m334z80z270d4duqdc3ysl1oyrjmxe1upyyfjyln12xxa-4gm603mczorxgh6751n5q7jya?192.168.22.177:2377

This?node?joined?a?swarmasa?worker.

#假如加入集群时报错如下

[root@node1?~]#??docker?swarm?join?–token?SWMTKN-1-32h92m334z80z270d4duqdc3ysl1oyrjmxe1upyyfjyln12xxa-4gm603mczorxgh6751n5q7jya??192.168.22.177:2377

Error?responsefromdaemon:?rpc?error:?code?=13desc?=?connection?error:?desc?=”transport:?x509:?certificate?has?expired?or?is?not?yet?valid”

#注意服务器时间同步问题,处理就可。

7、管理节点查看集群节点状态

[root@manager?~]#?docker?node?ls

ID???????????????????????????HOSTNAME??STATUS??AVAILABILITY??MANAGER?STATUS

elyfa6h1lx5o2s98une5vas4x?*??manager???Ready???Active????????Leader

tcuv2p8wd6rvmwg39pdav5ozk????node1?????Ready???Active

twytwc5dlp77vu1b7cakks9w2????node2?????Ready???Active

#swarm集群中node的AVAILABILITY状态有两种:Active、drain。其中actice状态的节点可以接受管理节点的任务指派;drain状态的节点会结束任务,也不会接受管理节点的任务指派,节点处于下线状态。

[root@manager?~]#?docker?node?update?–availability?drain?node2

node2

[root@manager?~]#?docker?node?ls

ID???????????????????????????HOSTNAME??STATUS??AVAILABILITY??MANAGER?STATUS

elyfa6h1lx5o2s98une5vas4x?*??manager???Ready???Active????????Leader

tcuv2p8wd6rvmwg39pdav5ozk????node1?????Ready???Active

twytwc5dlp77vu1b7cakks9w2????node2?????Ready???Drain

[root@manager?~]#?docker?node?update?–availability?active?node2

node2

[root@manager?~]#?docker?node?ls

ID???????????????????????????HOSTNAME??STATUS??AVAILABILITY??MANAGER?STATUS

elyfa6h1lx5o2s98une5vas4x?*??manager???Ready???Active????????Leader

tcuv2p8wd6rvmwg39pdav5ozk????node1?????Ready???Active

twytwc5dlp77vu1b7cakks9w2????node2?????Ready???Active

#在manager节点上查看状态信息

[root@manager?~]#?docker?node?inspect?self

[

{

“ID”:”elyfa6h1lx5o2s98une5vas4x”,

“Version”:?{

“Index”:?9

},

“CreatedAt”:”2018-06-14T15:01:19.850821157Z”,

“UpdatedAt”:”2018-06-14T15:01:20.472379584Z”,

“Spec”:?{

“Role”:”manager”,

“Availability”:”active”

},

“Description”:?{

“Hostname”:”manager”,

“Platform”:?{

“Architecture”:”x86_64″,

“OS”:”linux”

},

“Resources”:?{

“NanoCPUs”:?1000000000,

“MemoryBytes”:?2402566144

},

“Engine”:?{

“EngineVersion”:”1.13.1″,

“Plugins”:?[

{

“Type”:”Network”,

“Name”:”bridge”

},

{

“Type”:”Network”,

“Name”:”host”

},

{

“Type”:”Network”,

“Name”:”macvlan”

},

{

“Type”:”Network”,

“Name”:”null”

},

{

“Type”:”Network”,

“Name”:”overlay”

},

{

“Type”:”Volume”,

“Name”:”local”

}

]

}

},

“Status”:?{

“State”:”ready”,

“Addr”:”127.0.0.1″

},

“ManagerStatus”:?{

“Leader”:true,

“Reachability”:”reachable”,

“Addr”:”192.168.22.177:2377″

}

}

]

Swarm 的Web管理

[root@manager?~]#?docker?run?-d?-p?9000:9000?-v?/var/run/docker.sock:/var/run/docker.sock?portainer/portainer

Unable?to?find?image’portainer/portainer:latest’locally

Trying?to?pull?repository?docker.io/portainer/portainer?…

latest:?Pullingfromdocker.io/portainer/portainer

d1e017099d17:?Pull?complete

0d90a7ef0797:?Pull?complete

Digest:?sha256:2933caa6e578e94b5d91429ea7f47ae9741ee11b71d7cb740e76c5f234cc1d87

Status:?Downloaded?newer?imagefordocker.io/portainer/portainer:latest

798b3bea009792321519f5b7144e357ce9c5cea3b9341b5276a4d29f7571684a

[root@manager?~]#?docker?ps

CONTAINER?ID??IMAGE?????????????????COMMAND????????CREATED????????STATUS????????PORTS????????????????????NAMES

798b3bea0097??portainer/portainer”/portainer”6seconds?ago??Up5seconds0.0.0.0:9000->9000/tcp???amazing_snyder

浏览器访问

docker-swarm布署服务

1、布署服务前创立于个用于集群内不同主机之间容器通信的网络

[root@manager?~]#?docker?network?create?-d?overlay?dockernet

pmn1fi6lj421hn1nk7652m41h

[root@manager?~]#?docker?network?ls

NETWORK?ID??????????NAME????????????????DRIVER??????????????SCOPE

d913c7a275fe????????bridge??????????????bridgelocal

c737cf269524????????docker_gwbridge?????bridgelocal

pmn1fi6lj421????????dockernet???????????overlay?????????????swarm

eac1d68d35d7????????host????????????????hostlocal

wxshzhdvq52y????????ingress?????????????overlay?????????????swarm

c5986aec6119????????none????????????????nulllocal

2、创立服务(nginx为例)

[root@manager?~]#?docker?service?create?–replicas?1?–network?dockernet?–name?nginx-cluster?-p?80:80?nginx

k7lupo9xu0cnd5ng1g4f7i7jx

#–replicas?指定副本数量

[root@manager?~]#?docker?service?ls

ID????????????NAME???????????MODE????????REPLICAS??IMAGE

k7lupo9xu0cn??nginx-cluster??replicated1/1nginx:latest

[root@manager?~]#?docker?service?ps?nginx-cluster

ID????????????NAME?????????????IMAGE?????????NODE?????DESIRED?STATE??CURRENT?STATE???????????ERROR??PORTS

7t7xjpmao533??nginx-cluster.1nginx:latest??manager??Running????????Running17seconds?ago

[root@manager?~]#?docker?ps

CONTAINER?ID???IMAGE???????????????????????????????????????????????????????????????????????????COMMAND??????????????????CREATED?????????????STATUS??????????????PORTS?????NAMES

a9d78079fdc7??nginx@sha256:3e2ffcf0edca2a4e9b24ca442d227baea7b7f0e33ad654ef1eb806fbd9bedcf0″nginx?-g?’daemon?…”22seconds?ago??????Up22seconds80/tcp?????nginx-cluster.1.7t7xjpmao5335zaa8wp0c896a

3、在线动态扩容服务

[root@manager?~]#?docker?service?scale?nginx-cluster=5

nginx-cluster?scaled?to5

[root@manager?~]#?docker?service?ps?nginx-cluster

ID????????????NAME?????????????IMAGE?????????NODE?????DESIRED?STATE??CURRENT?STATE????????????ERROR??PORTS

7t7xjpmao533??nginx-cluster.1nginx:latest??manager??Running????????Running2hours?ago

vitsgxpdf3bn??nginx-cluster.2nginx:latest??manager??Running????????Running2seconds?ago

o9w529mmttsw??nginx-cluster.3nginx:latest??node1????Running????????Preparing2seconds?ago

cfz8dkx9p6ih??nginx-cluster.4nginx:latest??node2????Running????????Preparing2seconds?ago

9p35iunijoro??nginx-cluster.5nginx:latest??node2????Running????????Preparing2seconds?ago

#从输出结果可以看出已经将服务动态扩容至5个,也就是5个容器运行着相同的服务

[root@node2?~]#?docker?ps

CONTAINER?ID???IMAGE???????????????????????????????????????????????????????????????????????????COMMAND??????????????????CREATED?????????STATUS????????PORTS???NAMES

f3a4fb24480a???nginx@sha256:3e2ffcf0edca2a4e9b24ca442d227baea7b7f0e33ad654ef1eb806fbd9bedcf0″nginx?-g?’daemon?…”3minutes?ago???Up3minutes80/tcp??nginx-cluster.5.9p35iunijorol1d2ikhyj11oi

f8b0b2e514eb???nginx@sha256:3e2ffcf0edca2a4e9b24ca442d227baea7b7f0e33ad654ef1eb806fbd9bedcf0″nginx?-g?’daemon?…”3minutes?ago???Up3minutes80/tcp??nginx-cluster.4.cfz8dkx9p6ih40lwwwvd96xdg

#登录node2查看正在运行的容器,发现与管理节点上显示的结果相同,node2上运行两个容器

4、节点故障

[root@manager?~]#dockerservicepsnginx-cluster

IDNAMEIMAGENODEDESIREDSTATECURRENTSTATEERRORPORTS

7t7xjpmao533nginx-cluster.1nginx:latestmanagerRunningRunning2hoursago

vitsgxpdf3bnnginx-cluster.2nginx:latestmanagerRunningRunning10minutesago

f13cun1wyxltnginx-cluster.3nginx:latestmanagerRunningRunning9minutesago

q60fo5mja1ab\_nginx-cluster.3nginx:latestnode1ShutdownFailed9minutesago”startingcontainerfailed:sh…”

mao4htxp7afr\_nginx-cluster.3nginx:latestnode1ShutdownFailed9minutesago”startingcontainerfailed:sh…”

fhiecco742y4\_nginx-cluster.3nginx:latestnode1ShutdownFailed10minutesago”startingcontainerfailed:sh…”

8qp5kryo62ha\_nginx-cluster.3nginx:latestnode1ShutdownFailed10minutesago”startingcontainerfailed:sh…”

cfz8dkx9p6ihnginx-cluster.4nginx:latestnode2RunningRunning9minutesago

9p35iunijoronginx-cluster.5nginx:latestnode2RunningRunning9minutesago

#假如集群中节点发生故障,会从swarm集群中被T除,而后利用自身的负载均衡及调度功能,将服务调度到其它节点上

5、其它常用命令详情

除了上面使用scale来实现在线动态扩容、缩容之外,还可以使用update来对服务进行调整

[root@manager?~]#?docker?service?ls

ID????????????NAME???????????MODE????????REPLICAS??IMAGE

k7lupo9xu0cn??nginx-cluster??replicated??5/5???????nginx:latest

[root@manager?~]#?docker?service?update?–replicas?2?nginx-cluster

nginx-cluster

[root@manager?~]#?docker?service?ls

ID????????????NAME???????????MODE????????REPLICAS??IMAGE

k7lupo9xu0cn??nginx-cluster??replicated??2/2???????nginx:latest

#将服务缩减到2个

[root@manager?~]#?docker?service?update?–image?nginx:new?nginx-cluster

#升级服务的镜像版本

[root@manager?~]#?docker?service?–help?

Usage:????docker?service?COMMAND

Manage?services

Options:

–help???Print?usage

Commands:

createCreateanewservice

inspect?????Display?detailed?informationononeormore?services

lsListservices

psListthe?tasksofa?service

rm??????????Remove?oneormore?services

scale???????Scale?oneormultiple?replicated?services

updateUpdatea?service

Run’docker?service?COMMAND?–help’formore?informationona?command.

[root@manager?~]#?docker?rm?nginx-cluster

#将所有节点上的所有容器一律删除,任务也将一律删除

欢迎工作一到五年的Java工程师朋友们加入Java架构开发:744677563

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)正当利用自己每一分每一秒的时间来学习提升自己,不要再用”没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 容器技术|Docker三剑客之docker-swarm

发表回复