容器技术—docker swarm(二)

本篇是 docker swarm 技术点的第二篇,在上一篇 容器技术—docker swarm(一)的基础上继续往下讲。

6. 部署服务

6.1 基本部署操作

基于docker swarm的docker集群已经搭建完成,我们的目的是要在集群中部署应用。swarm集群部署应用最基本的命令是docker service,它的使用方式类似于docker container(也就是我们一直用的docker命令,docker命令是docker container的简写),也和docker container命令一样适合部署单个应用,不能进行编排,只不过一个是用于单机,一个用于集群。

下面以在swarm集群中部署nginx为例:

默认的情况下,管理节点也是一个工作节点,服务也会部署在了管理节点上,如果我们不希望服务部署在管理节点上的话,可以将管理节点设置为darin状态。
在这里插入图片描述
之后执行以下命令部署nginx应用:

docker service create --name nginx-test --replicas 2  -p 8080:80 nginx:1.21.6

在这里插入图片描述
swarm集群中进行应用部署使用docker swarm create命令,该命令与熟悉的 docker container run 命令的许多参数是相同的,上面的命令中声明基于nginx:1.21.6镜像部署应用,服务名称为nginx-test,将容器内部的80端口映射到集群网络的8080端口,在集群节点之中保持2个服务副本(即两个容器)。从上面的输出还可以看出,管理节点首先会根据版本获取镜像摘要,如果管理节点获取不到,则还有在各个节点分别尝试获取,然后拉取镜像。

命令执行完成之后,可以通过docker service ls查看服务的状态

docker service ls

在这里插入图片描述
可以看到服务已经部署成员,2/2表示两个服务副本都正常。我们创建的所有服务都会被 Swarm 持续监控,Swarm 会在后台进行轮训检查(Reconciliation Loop),来持续比较服务的实际状态和期望状态是否一致。如果一致,则无须任何额外操作;如果不一致,Swarm 会使其一致。换句话说,Swarm 会一直确保实际状态能够满足期望状态的要求。

例如这里的两个nginx的容器其中一个宕机了,swarm会重新启动一个副本,让正常运行的nginx容器始终保持在两个,这使得服务在面对节点宕机等问题时具有自愈能力。

通过docker service ps nginx-test查看服务的详细信息
在这里插入图片描述
可以看到,两个nginx容器分别启动在server节点和worker1节点。

我们可以通过swarm集群中的任意一个节点的ip加上开放出来的8080端口访问到nginx应用。
在这里插入图片描述
这里我通过192.168.137.201这个ip进行访问,也能访问得通。192.168.137.201对于的节点是server,而启动的nginx容器并没法在server上,这是因为在默认的情况下swarm集群采用ingress模式发布端口,通过路由网格模式让我们发布的端口在集群每一个节点上口都可以访问,再通过内部的负载均衡自动转发到实际的运行的容器之中。

我们的应用在实际的应用中可能会根据访问量进行扩容、缩容,即根据实际情况调整容器启动的数量,通过docker service scale命令可以很方便得进行操作。例如下面将nginx容器扩展到4个。

docker service scale nginx-test=4

在这里插入图片描述
再对其进行niginx-test服务进行缩容
在这里插入图片描述
有些时候我们会对服务的配置进行修改,例如增加一个映射端口:

docker service update --publish-add 8081:80 nginx-test

可以看到8080、8081都映射到了容器内部的80端口。在使用docker service update命令更新服务时,docker会停止现有的容器并且用新的配置启动新的容器。

我们也可以通过docker service update命令来更新容器镜像,实现日常工作中的版本迭代,还可以通过配置实现滚动更新。

docker service update --image nginx:latest --update-parallelism 1 --update-delay 20s nginx-test

在这里插入图片描述
这里我们指定对nginx-test服务进行更新,采用 nginx:latest新镜像, --update-parallelism 声明每次使用新镜像更新两个副本,–update-delay 声明每次更新期间有 20s 的延迟。

通过一个新的xshell窗口连接server服务器,用docker service ps nginx-test可以看到,两个正在运行的容器一个已经更新到latest版本,一个还没有。其他那些已经shutdown的容器是执行update命令之后关闭掉的容器。
在这里插入图片描述
更新完成之后,两个服务副本都已经是lastes版本了。
在这里插入图片描述
服务更新时,还可以配置更新失败回滚策略。如:

docker service update --image nginx:latest --update-parallelism 1 --update-delay 20s --rollback-parallelism=2 --rollback-monitor=20s --rollback-max-failure-ratio=.2 nginx-test

其中–rollback-parallelism=2 声明更新失败时每次回滚两个任务,–rollback-monitor声明回滚后,任务将被监视20秒,以确保它们不会退出,–rollback-max-failure-ratio 声明允许最大失败率为20%,这是一个0到1之间的浮点数。

除此之外,我们还可以手动回滚:

docker service update --rollback nginx-test

在这里插入图片描述
以上我们在update命令声明的更新策略、回滚策略,在声明之后都会被保存,下次更新、回滚时会按照这次策略执行无需再配置。通过docker service inspect命令查看服务详细信息可以看到。

docker service inspect nginx-test

在这里插入图片描述
这些策略也可以在创建服务的时候就设置好。

如果需要移除某个服务,可以用docker service rm 命令,需要注意的是这个服务使用要谨慎,它不会做二次提醒的。

docker service rm nginx-test

在这里插入图片描述

6.2 配置文件管理

docker cli中有一个docker config命令,这个命令用于管理docker配置文件,主要用于swarm模式创建服务时进行配置文件统一管理。

为什么需要这个呢?还是以nginx为例,nginx下有个nginx.conf文件用于配置代理信息,我们以服务的方式部署nginx,启动了多个容器,正常情况下一个服务的多个副本应该保持一致,统一修改,如果把这些存放在容器中后续修改会很不方便,而且容易出错导致副本容器不一致。

docker config 的创建:
(1) 创建文件:
在这里插入图片描述
(2) 创建config

docker config create nginx-conf ./default.conf

在这里插入图片描述
查看config

docker config ls

在这里插入图片描述
查看config的详细信息:

docker config inspect nginx-conf

在这里插入图片描述
默认情况下文件内容是通过base64算法加密的,可以在查看的时候对其进行解密

docker config inspect -f '{{json .Spec.Data}}' nginx-conf | cut -d '"' -f2 | base64 -d

在这里插入图片描述
删除config

docker config rm nginx-conf

这里我就不删除了,接下来就是在服务创建的时候使用配置文件了,通过–config参数设置配置文件,通过source参数指定配置文件,使用docker config的名称,通过target指定要替换的容器内部的文件

docker service create --name nginx-test --replicas 2 --config source=nginx-conf,target=/etc/nginx/conf.d/default.conf -p 8080:8000 nginx:latest

在这里插入图片描述
这里将容器映射端口改为8000是与配置文件的监听端口对应,验证配置是否生效,通过其中一个节点访问nginx,如下:
在这里插入图片描述
进入worker2节点看一下,可以看到我们设置的配置文件确实存在
在这里插入图片描述
对于配置文件,我们不能通过修改原文件的方式直接进行更新,只能够创建新的配置文件,然后通过docker service update命令来对服务进行更新。为了更容易地更新或回退 Config,可以考虑在 Config Name 中添加版本号或日期。

swarm对配置文件的管理机制是这样的:

在 Swarm 中添加一个 Config 时,Docker 通过 TLS 连接把 Config 发送给 Swarm Manager。这个 Config 经过加密后,存储在 Raft 日志中,而且整个 Raft 日志会被复制到其他 Manager 中,确保 Config 的高可用性。

在新创建的或正在运行的服务添加 Config 时,Config 将作为文件安装到容器中,文件路径默认为 linux 容器中的 /<config-name>

可以在任何时候通过更新服务的方式授权其他的 Config 或移除已有的Config 访问权。

如果节点是 Swarm Manager,或者正在运行服务任务已被授权访问这个 Config,那么这个节点才能访问这个配置。当容器任务停止运行时,共享给它的 Config 将从该容器的内存文件系统中卸载,并从节点的内存刷新。

如果一个节点运行了一个带 Config 的任务容器,在它失去与 Swarm 的连接后,这个任务容器仍然可以访问其 Config,但只有在节点重新连接到 Swarm 时才能接收更新。

正在运行的服务正在使用的 Config 不能删除。想要在不中断正在运行的服务的情况下删除配置可以参考 《Rotate a config》。

6.3 卷映射

卷映射是docker容器一个非常基本也非常有用的功能,能够保证就算容器挂了,数据依旧保留在宿主机上,不会丢失,同时也保证了容器的可移植性,只要重要数据还在,我们只要重新启动一个容器即可。

在swarm集群下一样可以做卷映射,通过卷映射来管理容器中的重要数据。集群服务中的卷映射参数和单机模式下有所不同,可以在创建服务时通过–mount参数配置,或者通过update命令中的–mount-add 和–mount-rm来管理。

集群服务中卷映射有两种模式,分别是volume和bind,默认是volume。

6.3.1 volumes模式

如果指定的卷在主机上已经存在,则使用指定的卷,如果在特定主机上执行容器启动任务时这些卷不存在,则会根据服务上的卷规范自动创建卷,默认路径为 /var/lib/docker/volumes/{your_custom_volume}/_data

还是以nginx服务部署为例,执行以下命令创建服务,将容器中/usr/share/nginx/html目录映射到nginx_data,nginx_data是卷名。

docker service create --replicas 1 --mount type=volume,src=nginx_data,dst=/usr/share/nginx/html --name nginx-test2 nginx

在这里插入图片描述
可以看到服务副本运行在 worker1节点上,ssh到worker1节点,可以看到映射出来的卷已经创建了,实际路径为/var/lib/docker/volumes/nginx_data/_data
在这里插入图片描述
默认的情况下,自动创建的卷使用的驱动是 local,可以在–mount参数中使用更具体的配置进行设置,格式如下:

docker service create --mounttype=volume,src=<VOLUME-NAME>,dst=<CONTAINER-PATH>,volume-driver=<DRIVER>,volume-opt=<KEY0>=<VALUE0>,volume-opt=<KEY1>=<VALUE1> --name myservice <IMAGE>

6.3.2 bind模式

将宿主机某个目录映射到docker容器,目录必须已经存在,如果节点初始化任务容器时路径不存在,则会报错,服务任务执行失败。很适合用于部署网站,可以宿主机的这个目录作为git版本目录,每次update代码的时候,容器就会更新。

docker service create --replicas 1 --mount type=bind,src=/home/yyl/nginx,dst=/usr/share/nginx/html --name nginx-test3 nginx

在这里插入图片描述
在worker1、worker2两个节点预先创建对应的目录后,启动就正常了。
在这里插入图片描述
bind模式的卷映射必须保证节点上已经存在对应的路径,比较麻烦。官方推荐使用volume模式,如果需要使用bind模式的话,可以通过节点标签指定服务任务在某些具备映射目录的节点上运行,但是这样也可能导致问题,如果你的副本容器挂掉了,swarm调度器会调度在其他节点重新启动,以保证存在足够的副本,但是由于节点条件的限制可能导致没有合适的节点可以指派。

6.3.3 NFS模式

以上两种方式都是单机docker上数据共享方式,使用的卷都是在节点机器上的,多个任务副本的情况下每个节点都会有相应的卷,在集群中这可能不适用,我们可以使用NFS来实现共享存储或网络存储。

NFS是一种基于TCP/IP传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群来说,使用NFS协议来共享数据存储是比较常见的做法,NFS也是存储设备必然支持的一种协议。但是由于NFS没有用户认证机制,且数据在网络上的明文传输,所以安全性很差,一般只在局域网中使用

NFS服务的实现依赖于RPC机制,已完成远程到本地的映射过程。所以需要安装nfs-utils、rpcbind软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC的支持。

下面可以简单演示怎么配置NFS服务
1、先配置主机
首先安装nfs-utils、rpcbind软件包

yum -y install nfs-utils rpcbind

然后配置配置共享目录,并赋予相应的权限
在这里插入图片描述
修改/etc/exports文件,添加规则。
()中的是添加的权限,这里选择的是可读可写,同时写入磁盘和内存,root用户不隐
藏。此外,我这边选择的是这个137.0网段的用户都可以使用这个NFS服务

在这里插入图片描述
然后开启nfs、rpcbind服务
在这里插入图片描述
通过端口查看是否已经运行服务。111是rpcbind,接着nfs是2049端口
在这里插入图片描述
exportfs -rv ;是用来查看本NFS共享服务器发布了哪些目录和地址

通过rpcinfo -p 查看nfs需要用到的端口,防火墙开放相应的端口,或者直接关闭防火墙
在这里插入图片描述
2、配置客户机
首先安装nfs-utils、rpcbind服务

yum install -y nfs-utils rpcbind

通过 showmount -e ip 命令获取共享目录
在这里插入图片描述
创建一个本地目录,并将其挂载到nfs服务
在这里插入图片描述
详细使用方式请参考以下文章:NFS共享存储

nfs服务已经部署完毕,接下来通过swarm集群实现卷共享

swarm 集群使用nfs卷挂载,在不用docker stack的情况下需要先在各个节点创建nfs数据卷,这里先使用使用以下命令在各个节点上创建nfs数据卷,docker stack方式之后再讲。

docker volume create --driver local --opt type=nfs --opt o=addr=192.168.137.202,rw --opt device=:/home/yyl/shared nfs-share

在这里插入图片描述
这里需要注意的是,创建nfs卷时,device 参数是指nfs服务端共享目录的路径

之后,再管理节点上使用以下命令创建服务

docker service create --replicas 2 --mount type=volume,src=nfs-share,dst=/usr/share/nginx/html --name nginx-nfs nginx

在这里插入图片描述
可以看到服务的两个任务已经分别运行在两个工作节点上了,接下来到worker2服务器上,找到卷对应的路径,在路径下创建一个文件

在这里插入图片描述
再到worker1服务器上,可以看到worker1下也有了我们刚刚创建的文件,两边内容是会保持同步的
![在这里插入图片描述](https://img-blog.csdnimg.cn/d86bac63c71b4481b207d338e4056926.png

6.4 私有库使用

日常工作中对于私有库的搭建和使用是必不可少的,swarm集群中通过私有库镜像创建服务,如果私有仓库使用http协议,需要在各个节点的docker主机中先设置信任私有库地址。

修改各个节点的/etc/docker/daemon.json文件,在insecure-registries节点中添加私有镜像仓库地址,之后重启docker服务:
在这里插入图片描述
注意管理节点重启docker之后,需要通过解锁码进行解锁。在生产环境下,节点比较多的情况下一个一个去配置daemon.json文件比较麻烦,可以在上面的集群初始化脚本中添加一些命令,在集群初始化的时候将私有仓库地址添加进去。

# 安装docker, 从安装源获取最新稳定版本并安装(二进制版)
for node in ${SERVER_IP[@]}; do
    echo "[INFO] Install docker -----> $node"
    ssh -T $node <<'EOF'
    bash <(curl -sSL https://gitee.com/yx571304/olz/raw/master/shell/docker/install.sh) -i docker
    sed -i 's/"live-restore": true/"live-restore": false/g' /etc/docker/daemon.json
   # 设置私有仓库
   sed -i 's/"insecure-registries": ["127.0.0.1"]/"insecure-registries": ["127.0.0.1", "xx.xx.xx.xx:8082"]/g' /etc/docker/daemon.json
    systemctl daemon-reload
    systemctl restart docker.service
EOF
done

由于我部署的私有库拉取docker镜像需要认证,所以还得在管理节点登录私有仓库。
在这里插入图片描述
之后通过–with-registry-auth参数使用加密的WAL日志将登录令牌从本地客户端传递到部署服务的swarm节点,就可以通过指定镜像来源仓库进行服务创建了。

docker service create --with-registry-auth --publish 8005:80 --name dockersample xx.xx.xx.xx:8082/dockersample

在这里插入图片描述
可以看到已经通过发布在私有仓库的镜像创建了服务,两个任务分别运行在两个节点。

在两个工作节点中查看镜像,也可以看到工作节点上拉取了镜像,启动了容器。
在这里插入图片描述
通过集群中的任意一个ip和8005端口可以访问到启动起来的服务
在这里插入图片描述

7. 服务管理基本命令

docker service 命令用于swam集群中对服务进行部署和管理,常用的命令如下,可用–help查看详细说明:
在这里插入图片描述

7.1 docker service create [OPTIONS] IMAGE [COMMAND] [ARG…]

按照指定的参数创建服务,后面可以命令和参数,类似docker run,常用的选项有:

  • –name: 指定服务名称
  • –label:设置服务标签
  • –mode:设置服务模式,可用值:global、replicated,默认值是replicated
    • global:全局模式,会在每一个可用节点都创建一个服务副本,而且每个节点有且只有一个
    • replicated:复制模式,可以指定复制个数,默认是1,swarm调度器会调度可以节点创建指定数量的副本,一个节点可以同时有多个副本
  • –replicas: 任务副本个数,与–mode=replicated,搭配使用
  • –replicas-max-per-node:每个节点可以运行的任务的最大个数,默认是0,表示没有限制
  • –env:设置运行时环境变量
  • –workdir:设置工作目录
  • –user:设置用户
  • –publish: 端口映射,默认使用 ingress 网络模式,使用swarm集群的负载均衡,会在每一个节点上都开放配置的端口,并且自动转发到容器内部。如果不想使用swarm集群负载均衡,想要自己更加灵活地做路由策略,可以设置为mode=host模式,这种模式下swarm集群只会在任务运行的节点上开放配置的端口,你需要知道任务副本运行在哪个几点上,一般情况下–publish mode=host 模式和 --mode=global一起使用。
    示例:
    docker service create --publish 8000:80 nginx
    docker service create --publish published=8080,target=80 nginx
    docker service create --mode global --publish mode=host,target=80,published=8080 --name=nginx nginx:latest
    
  • –mount:配置卷挂载,常用的两种挂载方式是volume和bind,区别在于一个会自动创建卷,一个必须节点上已经存在相应的卷
    示例:
    docker service create --mount src=<VOLUME-NAME>,dst=<CONTAINER-PATH> --name myservice <IMAGE>
    docker service create --mount type=bind,src=<HOST-PATH>,dst=<CONTAINER-PATH> --name myservice <IMAGE>
    
    volume模式可以根据实际情况设置卷驱动和各种参数,默认卷驱动是local,不同的卷驱动程序按照以下方式配置:
    docker service create --mount type=volume,src=<VOLUME-NAME>,dst=<CONTAINER-PATH>,volume-driver=<DRIVER>,volume-opt=<KEY0>=<VALUE0>,volume-opt=<KEY1>=<VALUE1> --name myservice  <IMAGE>
    
    bind模式可以讲目标路径装载为只读:
    docker service create --mount type=bind,src=<HOST-PATH>,dst=<CONTAINER-PATH>,readonly --name myservice <IMAGE>
    
  • –network:配置网络,不同的swarm服务可以共有一个覆盖网络,这样不同的服务之间就可以通讯,网络有可以做很多的配置,最基本的用法如下:
    docker network create --driveroverlay my-network
    docker service create \--replicas3 \--networkmy-network \--namemy-web \nginx
    
  • –config: 设置配置文件
  • –secret:设置机密信息,与–config类似
  • –reserve-memory:配置服务启动需要最少的内存,如果没有满足要求的节点,则服务将保持挂起状态,直到合适的节点可以运行其任务为止
  • –reserve-cpu:配置服务启动需要最少的cpu个数,如果没有满足要求的节点,则服务将保持挂起状态,直到合适的节点可以运行其任务为止
  • –constraint:设置任务节点约束,只有满足约束的节点会被调度运行任务副本,需要配置集群内的节点的标签使用,用于调度任务在合适的节点上运行,避免调度到一些不符合服务运行条件的节点,导致服务运行失败
  • –placement-pref:配置放置首选项,与–constraint类似,可以结合–constraint、–reserve-cpu、–reserve-memory一起使用,筛选合适的节点。要注意的是,不要做出无法达到的条件筛选。
  • –update-delay:更新策略,两次更新任务之间间隔多长,默认0s,可用时间单位:ns、us、ms、s、m、h
  • –update-failure-action:更新失败时的操作,默认为pause,可用值:pause、continue、rollback
  • –update-max-failure-ratio:可以容忍的更新失败比例,默认时0,可用值为0到1的浮点数,表示更新失败的百分比,1为100%
  • –update-monitor:更新之后需要监控容器正常运行多长时间,默认是5s
  • –update-parallelism:每次同时根据的任务副本个数,默认是1
  • –rollback-delay:回滚策略,两次回滚任务之间间隔多长,默认0s,可用时间单位:ns、us、ms、s、m、h
  • –rollback-failure-action:回滚失败时的操作,默认为pause,可用值:pause、continue、rollback
  • –rollback-max-failure-ratio:可以容忍的回滚失败比例,默认时0,可用值为0到1的浮点数,表示更新失败的百分比,1为100%
  • –rollback-monitor:回滚之后需要监控容器正常运行多长时间,默认是5s
  • –rollback-parallelism:每次同时根据的任务副本个数,默认是1
  • –restart-condition:配置重启策略,可用值有:“none”、“on-failure”、“any”,默认是any
  • –restart-delay:尝试重启的时间间隔
  • –restart-max-attempts:尝试重启的最大次数
  • –with-registry-auth:服务创建的时候,各个工作节点同步管理节点的私有仓库登录凭证,从而各个节点可用拉取私有仓库镜像

create 命令是docker service很重要的一个命令,涉及的相关选项非常多,这里没有列全,也没有讲解得很详细,大家实际用到的时候再具体了解。

7.2 docker service ls [OPTIONS]

列出所有服务,命令常用选项如下:

  • -f:对服务进行过滤
  • -q:只展示id

7.3 docker service ps [OPTIONS] SERVICE [SERVICE…]

列出一个或多个服务的详细任务信息,可以查看服务对于的任务副本的状态,具体在哪个节点等,命令常用选项如下:

  • -f:对任务进行过滤
  • -q:只展示id

7.4 docker service inspect [OPTIONS] SERVICE [SERVICE…]

查看一个或多个服务的元信息,能够了解到服务内部的很多配置和一些原理,常用选项如下:

  • –pretty:对服务信息进行格式化

7.5 docker service logs [OPTIONS] SERVICE|TASK

通过服务或任务的名称、id,输出服务或者任务的日志信息,对于排查错误有用,常用选项如下:

  • –since:给定一个时间戳,输出从给定时间之后的日志
  • -n:输出最后多少行
  • -t:显示每行日志的时间

7.6 docker service scale SERVICE=REPLICAS [SERVICE=REPLICAS…]

设置服务的副本个数,选项如下:

  • -d:后台运行命令

7.7 docker service update [OPTIONS] SERVICE

按照新的配置更新服务,update命令的大部分参数配置会关闭原有的副本容器,重新启动新的容器。常用选项如下:

  • –image:更新服务使用的镜像,一般用于对服务进行迭代升级,指定新的镜像标签重启容器
  • –replicas:更新服务的副本数量,用于扩容缩容,和docker service scale功能相同
  • –replicas-max-per-node:单个节点最多可部署多少个副本
  • –env-add:添加或更新环境变量
  • –env-rm:移除环境变量
  • –workdir:更改工作目录
  • –user:更改用户
  • –publish-add:添加或更新端口映射,与create命令中的格式一样
  • –publish-rm:通过目标端口删除已发布的端口
  • –mount-add:新增或更新卷映射配置
  • –mount-rm:移除卷映射配置
  • –network-add:添加网络
  • –network-rm:移除网络
  • –config-add:添加或者更新服务配置文件
  • –config-rm:删除服务配置文件
  • –secret-add:添加或更新机密数据
  • –secret-rm:删除机密数据
  • –reserve-memory:配置服务启动需要最少的内存
  • –reserve-cpu:配置服务启动需要最少的cpu个数
  • –constraint-add:添加或更新约束
  • –constraint-rm:删除约束
  • –placement-pref-add:添加或更新首选项
  • –placement-pref-rm:删除首选项
  • –rollback:回滚到之前的版本,不能和update除回滚配置之外的其他命令一起使用,相当于docker service rollback命令
  • –force:强制更新,update命令有一些参数不会导致启动新的容器,通过这个参数可以强制启动新的容器

update命令也是docker service很重要的命令之一,这里可用的选项没有列全,也没有讲的很详细,但是update命令相关选项可以分布三类,一些是update特有的,如–force、–rollback等,一些是和create命令中的参数配置对于,但是存在更新和移除两种情况的,如–publish-add、–publish-rm等,一些是和create命令中的参数一样的,如–rollback-delay、–update-delay等,这一部分就没有列出来了。

7.8 docker service rollback [OPTIONS] SERVICE

按照回滚配置回滚一个服务,选项如下:

  • -d:后台运行命令

7.9 docker service rm SERVICE [SERVICE…]

移除一个或者多个服务,需要注意的是,该命令不会二次确认,使用的时候请小心


这一篇写下来docker swarm下服务部署的基本知识点就已经讲清楚了,但是也还有很多东西没有深入去讲的,例如网络、卷技术都有很多东西可以深入去了解的,而且如果是生产环境,使用docker service进行服务部署还是有很多不便的。这些后面都会继续往下讲。

微服务系列文章:
上一篇:容器技术—docker swarm(一)
下一篇:容器技术—docker stack

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值