CHAPTER 14 Swarm

news2024/10/6 8:36:07

Swarm

    • 14.1 Swarm简介
    • 14.2 Swarm vs K8s
    • 14.3 基本概念
      • 1. Swarm集群
      • 2.节点
      • 3.服务
      • 4.任务
      • 5.服务的外部访问
    • 14.4 使用Swarm
      • 1.创建集群(init)
      • 2.查看集群信息(info)
      • 3.加入集群(join)
      • 4.使用集群服务(service)
        • 1. 创建服务(service create)
        • 2. 查看服务(service ls)
        • 3. 扩缩服务(service scale)
        • 4. 使用外部服务地址(--publish)
        • 5. 更新集群(update)
        • 6. 离开集群(leave)
    • 14.5 使用服务命令
      • 1. create
      • 2. inspect
      • 3. logs
      • 4. Is
      • 5. ps
      • 6. rm
      • 7. rollback
      • 8. scale
      • 9. update

14.1 Swarm简介

Docker Swarm是Docker公司推出的官方容器集群平台,基于Go语言实现,代码开源在https:// github.com/ docker/swarm。目前,包括Rackspace等平台都采用了Swarm,用户也很容易在AWS等公有云平台使用Swarm。

Swarm的前身是Beam项目和libswarm项目,首个正式版本(SwarmVl)在2014年12月初发布。为了提高可扩展性,2016年2月对架构进行重新设计,推出了V2版本,支持超过lK个节点。最新的Docker Engine (1.12 后)已经集成了SwarmKit内嵌了对Swarm模式的支持。

作为容器集群管理器,Swarm最大的优势之一就是原生支持DockerAPI,给用户使用带来极大的便利。各种基于标准API的工具比如Compose、DockerSDK、各种管理软件,甚至Docker本身等都可以很容易的与Swarm进行集成。这大大方便了用户将原先基于单节点的系统移植到Swarm上。同时Swarm内置了对Docker网络插件的支持,用户可以很容易地部署跨主机的容器集群服务。

Swarm也采用了典型的“主从”结构(如图所示),通过Raft协议来在多个管理节点(Manager)中实现共识。工作节点(Worker)上运行agent接受管理节点的统一管理和任务分配。用户提交服务请求只需要发给管理节点即可,管理节点会按照调度策略在集群中分配节点来运行服务相关的任务。在SwarmV2中,集群中会自动通过Raft协议(Raft协议详解)分布式选举出Manager节点,无须额外的发现服务支持,避免了单点瓶颈。同时,V2中内置了基于DNS的负载均衡和对外部负载均衡机制的集成支持。

在这里插入图片描述

14.2 Swarm vs K8s

K8S与swarm都是架构在docker之上,都是对集群化的容器服务进行部署、运维的工具。本质都是容器编排服务。
swarm本身就是内嵌在docker引擎之中的,与docker引擎融为一体,k8s自身大部分功能也是以容器的方式部署,来完成容器编排的任务 。

swarm与k8s(kubernetes简称)的比较,一点像MySQL和SQL Server的比较。
前者轻量级、实施快、以实现核心功能为重,比较适合小规模部署,后者则是企业级、功能全、支撑场景多,适合做企业级大规模docker云方案。
[云原生专题-22]:K8S - 集群编排工具K8S与SWARM比较与技术选择

14.3 基本概念

Swarm在Docker基础上扩展了支持多节点的能力,同时兼容了大部分的Docker操作。Swarm中以集群为单位进行管理,支持服务层面的操作。下面首先介绍Swarm使用中的一些基本概念。

1. Swarm集群

Swarm集群(Cluster)为一组被统一管理起来的Docker主机。集群是Swarm所管理的对象。这些主机通过Docker引擎的Swarm模式相互沟通,其中部分主机可能作为管理节点(manager)响应外部的管理请求,其他主机作为工作节点(worker)来实际运行Docker容器。当然,同一个主机也可以即作为管理节点,同时作为工作节点。
当用户使用Swarm集群时,首先定义一个服务(指定状态、复制个数、网络、存储、暴露端口等),然后通过管理节点发出启动服务的指令,管理节点随后会按照指定的服务规则进行调度,在集群中启动起来整个服务,并确保它正常运行。

2.节点

节点(Node)是Swarm集群的最小资源单位。每个节点实际上都是一台Docker主机。Swarm集群中节点分为两种:

  1. 管理节点(manager node):负责响应外部对集群的操作请求,并维持集群中资源,分发任务给工作节点。同时,多个管理节点之间通过Raft协议构成共识。一般推荐每个集群设置5个或7个管理节点;
  2. 工作节点(worker node):负责执行管理节点安排的具体任务。默认情况下,管理节点自身也同时是工作节点。每个工作节点上运行代理(agent)来汇报任务完成情况

用户可以通过docker node promote命令来提升一个工作节点为管理节点;或者通过docker node demote命令来将一个管理节点降级为工作节点。

3.服务

服务(Service)是Docker支持复杂多容器协作场景的利器。
一个服务可以由若干个任务组成,每个任务为某个具体的应用。服务还包括对应的存储、网络、端口映射、副本个数、访问配置、升级配置等附加参数。
一般来说,服务需要面向特定的场景,例如一个典型的Web服务可能包括前端应用、后端应用,以及数据库等。这些应用都属于该服务的管理范畴。

Swarm集群中服务类型也分为两种(可以通过-mode指定):

  1. 复制服务(replicated services)模式:默认模式,每个任务在集群中会存在若干副本,这些副本会被管理节点按照调度策略分发到集群中的工作节点上。此模式下可以使用-replicas参数设置副本数量;
  2. 全局服务(global services)模式:调度器将在每个可用节点都执行一个相同的任务。该模式适合运行节点的检查,如监控应用等。

4.任务

任务是Swarm集群中最小的调度单位,即一个指定的应用容器。例如仅仅运行前端业务的前端容器。
任务从生命周期上讲可能处于创建(NEW)、等待(PENDING)、分配(ASSIGNED)、接受(ACCEPTED)、准备(PREPARING)、开始(STARTING) 、运行(RUNNING)、完成(COMPLETE)、失败(FAILED) 、关闭(SHUTDOWN)、拒绝(REJECTED)、孤立(ORPHANED)等不同状态。
Swarm集群中的管理节点会按照调度要求将任务分配到工作节点上。例如指定副本为2时,可能会被分配到两个不同的工作节点上。一旦当某个任务被分配到一个工作节点,将无法被转移到另外的工作节点,即Swarm中的任务不支持迁移。

5.服务的外部访问

Swarm集群中的服务要被集群外部访问,必须要能允许任务的响应端口映射出来。Swarm中支持入口负载均衡(ingress load balancing)的映射模式。该模式下,每个服务都会被分配一个公开端口(Published Port),该端口在集群中任意节点上都可以访问到,并被保留给该服务。
当有请求发送到任意节点的公开端口时,该节点若并没有实际执行服务相关的容器,则会通过路由机制将请求转发给实际执行了服务容器的工作节点。

14.4 使用Swarm

用户在安装Docker1.12或更新的版本后,即可直接尝试Swarm模式的相关功能。假定分别准备两个Linux主机,作为管理节点(实际上也同时具备工作节点功能)和工作节点。下面来演示Swarm集群的主要操作,包括:

  • swarm init:在管理节点上创建一个集群;
  • node list :列出集群中的节点信息;
  • swarm join:加入一个新的节点到已有集群中;
  • swarm update :更新一个Swarm集群;
  • swarm leave:离开一个Swarm集群。

由于swarm内嵌在docker engine上,所以使用以上命令,都需要加上docker,例如:

[root@dbc-server-554 spark_cluster]# docker node list
ID                            HOSTNAME         STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
o3u3ytdc5uj73vn4s8959zpml *   dbc-server-554   Ready     Active         Leader           20.10.23
6699n51mjfxvve7hspvyvg4ms     swarm-worker     Ready     Active                          20.10.23

此外,还可以使用docker service命令部署Docker应用服务到集群中;

1.创建集群(init)

在管理节点上执行swarm init命令来创建一个新的Swarm集群,创建成果后会自动提示如何加入更多节点到集群中。

[root@dbc-server-554 spark_cluster]# docker swarm init
Swarm initialized: current node (o3u3ytdc5uj73vn4s8959zpml) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-1bys7vz7rv3q3ul1d7pavfvgcriykkodqo8n7py1ngesimw4if-28u3eceh8aphudtvuqyo8hv30 192.168.5.54:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

注意返回的token串,这是集群的唯一id加入集群的各个节点将需要这个信息。
另外,默认的管理服务端口为2377,需要能被工作节点访问到;另外,为了支持集群的成员发现和外部服务映射,还需要再所有节点上开启7946 TCP/UDP端口和4789 UDP端口。

swarm init命令格式:

SYNOPSIS
       docker swarm init [OPTIONS]

DESCRIPTION
       Initialize a swarm

OPTIONS
       --advertise-addr=""      Advertised address (format: [:port])#指定服务监昕的地址和端口;
       --autolock[=false]      Enable manager autolocking (requiring an unlock key to start a stopped manager)#自动锁定管理服务的启停操作,对服务进行启动或停止都需要通过口令来解锁;
       --availability="active"      Availability of the node ("active"|"pause"|"drain")#节点的可用性,包括active、pause、drain(耗尽)三种,默认为active;
       --cert-expiry=2160h0m0s      Validity period for node certificates (ns|us|ms|s|m|h)#根证书的过期时长,默认为90天;
       --data-path-addr=""      Address or interface to use for data path traffic (format: )#指定数据流量使用的网络接口或地址;
       --data-path-port=0      Port number to use for data path traffic (1024 - 49151). If no value is set or is set to 0, the default port (4789) is used.
       --default-addr-pool=[]      default address pool in CIDR format
       --default-addr-pool-mask-length=24      default address pool subnet mask length
       --dispatcher-heartbeat=5s      Dispatcher heartbeat period (ns|us|ms|s|m|h)#分配组件的心跳时长,默认为5秒;
       --external-ca=      Specifications of one or more certificate signing endpoints#指定使用外部的证书签名服务地址;
       --force-new-cluster[=false]      Force create a new cluster from current state#强制创建新集群;
       -h, --help[=false]      help for init
       --listen-addr=0.0.0.0:2377      Listen address (format: [:port])
       --max-snapshots=0      Number of additional Raft snapshots to retain#Raft协议快照保留的个数;
       --snapshot-interval=10000      Number of log entries between Raft snapshots#Raft协议进行快照的间隔(单位为事务个数),默认为10000个事物;
       --task-history-limit=5      Task history retention limit#任务历史的保留个数,默认为5。

2.查看集群信息(info)

此时通过docker info命令可以查看到集群的信息:

[root@dbc-server-554 spark_cluster]# docker info
...
Swarm: active
  NodeID: o3u3ytdc5uj73vn4s8959zpml
  Is Manager: true
  ClusterID: sx8krvrz34xyed3pp9fjxrpqz
  Managers: 1
  Nodes: 2
  Default Address Pool: 10.0.0.0/8
  SubnetSize: 24
  Data Path Port: 4789
  Orchestration:
   Task History Retention Limit: 5
   ...

3.加入集群(join)

在所有要加入集群的普通节点上面执行swarm join命令,表示把这台机器加入指定集群当中。例如,在工作节点上,将其加入刚创建的集群,则可以通过:

[root@localhost ~]# docker swarm join --token   SWMTKN-1-1bys7vz7rv3q3ul1d7pavfvgcriykkodqo8n7py1ngesimw4if-28u3eceh8aphudtvuqyo8hv30  192.168.5.54:2377
This node joined a swarm as a worker.

此时,在管理节点上再次查看集群中节点情况,可以看到新加入的工作节点:

[root@dbc-server-554 spark_cluster]# docker node ls
ID                            HOSTNAME         STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
o3u3ytdc5uj73vn4s8959zpml *   dbc-server-554   Ready     Active         Leader           20.10.23
6699n51mjfxvve7hspvyvg4ms     swarm-worker     Ready     Active                          20.10.23

4.使用集群服务(service)

那么,怎么使用Swarm提供的服务呢?实际上有两种方法:
一种是使用Docker原来的客户端命令,只要指定使用Swarm manager服务的监昕地址即可。例如,manager服务监听的地址为<manager ip>:2377,则可以通过指定-H <manager ip>:2377选项来继续使用Docker客户端,执行任意Docker命令,例如ps、info、run等。
另外一种方法,也是推荐的做法,是使用新的docker service命令(下文会有详细介绍),可以获得包括多主机网络等更高级的特性支持。

1. 创建服务(service create)

可以在管理节点上执行如下命令来快速创建一个应用服务,并制定服务的复制份数为2。如下命令所示,默认会自动检查确认服务状态都正常:

[root@dbc-server-554 spark_cluster]# docker service create --replicas 2 --name ping_app debian:jessie ping                                 docker.com
md3dcldy8ztwszgf23s5c0gur
overall progress: 2 out of 2 tasks
1/2: running   [==================================================>]
2/2: running   [==================================================>]
verify: Service converged

2. 查看服务(service ls)

此时使用service ls查看集群中服务情况,会发现新创建的ping_app服务;还可通过service inspect命令来查看服务的具体

[root@dbc-server-554 spark_cluster]# docker service ls
ID             NAME       MODE         REPLICAS   IMAGE           PORTS
md3dcldy8ztw   ping_app   replicated   2/2        debian:jessie
[root@dbc-server-554 spark_cluster]# docker service inspect --pretty ping_app

ID:             md3dcldy8ztwszgf23s5c0gur
Name:           ping_app
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:         debian:jessie@sha256:32ad5050caffb2c7e969dac873bce2c370015c2256ff984b70c1c08b3a2816a0
 Args:          ping docker.com
 Init:          false
Resources:
Endpoint Mode:  vip

同时,管理节点和工作节点上都运行了一个容器,镜像为debian:jessie,命令为ping docker.com:

[root@dbc-server-554 spark_cluster]# docker service ps ping_app
ID             NAME         IMAGE           NODE             DESIRED STATE   CURRENT STATE                ERROR     PORTS
rzswwpln3ar6   ping_app.1   debian:jessie   swarm-worker     Running         Running 3 minutes ago
matrp9busk6w   ping_app.2   debian:jessie   dbc-server-554   Running         Running about a minute ago

3. 扩缩服务(service scale)

用户还可以通过docker service scale <SERVICE-ID>=<NUMBER-OF-TASKS>命令来对服务进行伸缩,例如将服务复制个数从2改为1

[root@dbc-server-554 spark_cluster]# docker service scale ping_app=1
ping_app scaled to 1
overall progress: 1 out of 1 tasks
1/1: running   [==================================================>]
verify: Service converged
[root@dbc-server-554 spark_cluster]# docker service ls
ID             NAME       MODE         REPLICAS   IMAGE           PORTS
md3dcldy8ztw   ping_app   replicated   2/1        debian:jessie
[root@dbc-server-554 spark_cluster]# docker service ps ping_app
ID             NAME         IMAGE           NODE           DESIRED STATE   CURRENT STATE           ERROR     PORTS
rzswwpln3ar6   ping_app.1   debian:jessie   swarm-worker   Running         Running 4 minutes ago
[root@dbc-server-554 spark_cluster]# docker service logs ping_app
ping_app.1.rzswwpln3ar6@swarm-worker    | PING docker.com (141.193.213.20) 56(84) bytes of data.
ping_app.1.rzswwpln3ar6@swarm-worker    | 64 bytes from 141.193.213.20: icmp_seq=1 ttl=52 time=162 ms
...

服务使用完成后可以通过docker service rm <SERVICE-ID>命令来进行删除。服务命令更多的参数可以通过docker service help进行查看。

4. 使用外部服务地址(–publish)

Swarm通过路由机制支持服务对外映射到指定端口,该端口可以在集群中任意节点上进行访问,即使该节点上没有运行服务实例。需要在创建服务时使用--publish参数:

docker service create \ 
	--name <service name> \ 
	--publish published=<pubport>,target=<container port>  \ 
	< IMAGE> 
[root@dbc-server-554 spark_cluster]# docker service create --name mynginx --publish published=80,target=80 nginx:latest
v1cc2zrd054l86nfk5zhf106c
overall progress: 1 out of 1 tasks
1/1: running   [==================================================>]
verify: Service converged
[root@dbc-server-554 spark_cluster]# docker service ls
ID             NAME        MODE         REPLICAS   IMAGE           PORTS
v1cc2zrd054l   mynginx     replicated   1/1        nginx:latest    *:80->80/tcp

在其他节点访问80端口:

[root@localhost ~]# curl 192.168.5.54:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
...

用户访问集群中任意节点的,都会被Swarm的负载均衡器代理到对应的服务实例。用户也可以配置独立的负载均衡服务,后端指向集群中各个节点对应的外部端口,获取高可用特性。

5. 更新集群(update)

用户可以使用swarm update命令来更新一个集群,主要包括如下配置信息:

SYNOPSIS
       docker swarm update [OPTIONS]

DESCRIPTION
       Update the swarm

OPTIONS
       --autolock[=false]      Change manager autolocking setting (true|false)#启动或关闭自动锁定;
       --cert-expiry=2160h0m0s      Validity period for node certificates (ns|us|ms|s|m|h)#根证书的过期时长,默认为90天;
       --dispatcher-heartbeat=5s      Dispatcher heartbeat period (ns|us|ms|s|m|h)#分配组件的心跳时长,默认为5秒
       --external-ca=      Specifications of one or more certificate signing endpoints#指定使用外部的证书签名服务地址;
       -h, --help[=false]      help for update
       --max-snapshots=0      Number of additional Raft snapshots to retain#Ra玩协议快照保留的个数;
       --snapshot-interval=10000      Number of log entries between Raft snapshots#Raft协议进行快照的间隔(单位为事务个数),默认为10000个事物;
       --task-history-limit=5      Task history retention limit#任务历史的保留个数,默认为5

6. 离开集群(leave)

节点可以在任何时候通过swarm leave命令离开一个集群。命令格式为
docker swarm leave [OPTIONS]
支持-f, --force 意味着强制离开集群。

14.5 使用服务命令

Swarm提供了对应用服务的良好的支持,使用Swarm集群可以充分满足应用服务可扩展、高可用的需求。Docker通过service命令来管理应用服务,主要包括create、inspect、logs、ls、ps、rm、rollback、scale、update等若干子命令

命令说明
create创建应用
rm删除服务
inspect查看应用的详细信息
rollback回滚服务
logs获取服务或任务的日志信息
scale对服务进行横向扩展调整
ls列出服务的信息
update更新服务
ps列出服务中包括的任务信息

1. create

顾名思义,负责创建一个应用

SYNOPSIS
       docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS
       --config=      Specify configurations to expose to the service#指定暴露给服务的配置;
       --constraint=      Placement constraints#应用实例在集群中被放置时的位置限制;
       -d, --detach[=false]      Exit immediately instead of waiting for the service to converge#不等待创建后对应用进行状态探测即返回;
       --dns=      Set custom DNS servers#自定义使用的DNS服务器地址;
       --endpoint-mode="vip"      Endpoint mode (vip or dnsrr)#指定外部访问的模式,包括vip(虚地址自动负载均衡)或dnsrr(DNS轮询)
       --entrypoint=      Overwrite the default ENTRYPOINT of the image
       -e, --env=      Set environment variables#环境变量列表
       --env-file=      Read in a file of environment variables
       --generic-resource=      User defined resources
       --group=      Set one or more supplementary user groups for the container
       --health-cmd=""      Command to run to check health#进行健康检查的指令
       --health-interval=      Time between running the check (ms|s|m|h)
       -l, --label=      Service labels#执行服务的标签;
       --limit-cpu=      Limit CPUs
       --limit-memory=0      Limit Memory
       --limit-pids=0      Limit maximum number of processes (default 0 = unlimited)
       --log-driver=""      Logging driver for service
       --log-opt=      Logging driver options
       --max-concurrent=      Number of job tasks to run concurrently (default equal to --replicas)
       --mode="replicated"      Service mode (replicated, global, replicated-job, or global-job)#服务模式,包括replicated(默认)或global;
       --mount=      Attach a filesystem mount to the service
       --name=""      Service name
       --network=      Network attachments
	   --replicas=      Number of tasks#指定实例的复制份数;
       --secret=      Specify secrets to expose to the service#向服务暴露的秘密数据;
	   -u, --user=""      Username or UID (format: [:])#指定用户信息,UID:[GID]
       -w, --workdir=""      Working directory inside the container#指定容器中的工作目录位置。

2. inspect

查看应用的详细信息

SYNOPSIS
       docker service inspect [OPTIONS] SERVICE [SERVICE...]
OPTIONS
       -f, --format=""      Format the output using the given Go template#使用Go模板指定格式化输出;
       --pretty[=false]      Print the information in a human friendly format#以适合阅读的格式输出。

3. logs

获取某个服务或任务的日志信息

SYNOPSIS
       docker service logs [OPTIONS] SERVICE|TASK
OPTIONS
       --details[=false]      Show extra details provided to logs#输出所有的细节日志信息;
       -f, --follow[=false]      Follow log output#持续跟随输出
       -h, --help[=false]      help for logs
       --no-resolve[=false]      Do not map IDs to Names in output#在输出中不将对象的ID映射为名称;
       --no-task-ids[=false]      Do not include task IDs in output#输出中不包括任务的ID信息;
       --no-trunc[=false]      Do not truncate output#不截断输出信息;
       --raw[=false]      Do not neatly format logs#输出原始格式信息;
       --since=""      Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)#输出自指定时间开始的日志,如2018-01-02T03:04:56或42m
       -n, --tail="all"      Number of lines to show from the end of the logs#只输出给定行数的最新日志信息;
       -t, --timestamps[=false]      Show timestamps#打印日志的时间戳。

4. Is

列出服务的信息

SYNOPSIS
       docker service ls [OPTIONS]

DESCRIPTION
       List services

OPTIONS
       -f, --filter=      Filter output based on conditions provided#只输出符合过滤条件的服务;
       --format=""      Pretty-print services using a Go template#按照Go模板格式化输出;
       -h, --help[=false]      help for ls
       -q, --quiet[=false]      Only display IDs#只输出服务的ID信息。

5. ps

列出服务中包括的任务信息

SYNOPSIS
       docker service ps [OPTIONS] SERVICE [SERVICE...]
OPTIONS
       -f, --filter=      Filter output based on conditions provided
       --format=""      Pretty-print tasks using a Go template
       -h, --help[=false]      help for ps
       --no-resolve[=false]      Do not map IDs to Names
       --no-trunc[=false]      Do not truncate output
       -q, --quiet[=false]      Only display task IDs

6. rm

删除指定的若干服务

SYNOPSIS
       docker service rm SERVICE [SERVICE...]

7. rollback

回滚服务的配置

SYNOPSIS
       docker service rollback [OPTIONS] SERVICE
OPTIONS
       -d, --detach[=false]      Exit immediately instead of waiting for the service to converge#执行后返回,不等待服务状态校验完整;
       -h, --help[=false]      help for rollback
       -q, --quiet[=false]      Suppress progress output#不显示执行进度信息

8. scale

对服务进行横向扩展调整

SYNOPSIS
       docker service scale SERVICE=REPLICAS [SERVICE=REPLICAS...]
OPTIONS
       -d, --detach[=false]      Exit immediately instead of waiting for the service to converge

9. update

更新一个服务

SYNOPSIS
       docker service update [OPTIONS] SERVICE
OPTIONS
       --args=      Service command args#服务的命令参数;
       --cap-add=      Add Linux capabilities
       --cap-drop=      Drop Linux capabilities
       --config-add=      Add or update a config file on a service#增加或更新一个服务的配置信息;
       --config-rm=      Remove a configuration file#删除一个配置文件;
       --constraint-add=      Add or update a placement constraint#增加或更新放置的限制条件;
       --constraint-rm=      Remove a constraint#删除一个限制条件;
       --container-label-add=      Add or update a container label
       --container-label-rm=      Remove a container label by its key
       --credential-spec=      Credential spec for managed service account (Windows only)
       -d, --detach[=false]      Exit immediately instead of waiting for the service to converge#执行后返回,不等待服务状态校验完整;
       --dns-add=      Add or update a custom DNS server#增加或更新DNS服务信息;
       --dns-option-add=      Add or update a DNS option
       --dns-option-rm=      Remove a DNS option
       --dns-rm=      Remove a custom DNS server#删除DNS服务信息;
       --dns-search-add=      Add or update a custom DNS search domain
       --dns-search-rm=      Remove a DNS search domain
       --endpoint-mode=""      Endpoint mode (vip or dnsrr)#指定外部访问的模式,包括vip(虚地址自动负载均衡)或dnsrr(DNS轮询);
       --entrypoint=      Overwrite the default ENTRYPOINT of the image#指定默认的入口命令;
       --env-add=      Add or update an environment variable#添加或更新一组环境变量;
       --env-rm=      Remove an environment variable#删除环境变量;
       --force[=false]      Force update even if no changes require it
       --generic-resource-add=      Add a Generic resource
       --generic-resource-rm=      Remove a Generic resource
       --group-add=      Add an additional supplementary user group to the container
       --group-rm=      Remove a previously added supplementary user group from the container
       --health-cmd=""      Command to run to check health#进行健康检查的指令;
       --health-interval=      Time between running the check (ms|s|m|h)
       --health-retries=0      Consecutive failures needed to report unhealthy
       --health-start-period=      Start period for the container to initialize before counting retries towards unstable (ms|s|m|h)
       --health-timeout=      Maximum time to allow one check to run (ms|s|m|h)
       -h, --help[=false]      help for update
       --host-add=      Add a custom host-to-IP mapping (host:ip)
       --host-rm=      Remove a custom host-to-IP mapping (host:ip)
       --hostname=""      Container hostname
       --image=""      Service image tag
       --init[=false]      Use an init inside each service container to forward signals and reap processes
       --isolation=""      Service container isolation mode
       --label-add=      Add or update a service label#添加或更新一组标签信息;
       --label-rm=      Remove a label by its key#删除一组标签信息;
       --limit-cpu=      Limit CPUs
       --limit-memory=0      Limit Memory
       --limit-pids=0      Limit maximum number of processes (default 0 = unlimited)
       --log-driver=""      Logging driver for service
       --log-opt=      Logging driver options
       --max-concurrent=      Number of job tasks to run concurrently (default equal to --replicas)
       --mount-add=      Add or update a mount on a service
       --mount-rm=      Remove a mount by its target path
       --network-add=      Add a network
       --network-rm=      Remove a network
       --no-healthcheck[=false]      Disable any container-specified HEALTHCHECK#不进行健康检查;
       --no-resolve-image[=false]      Do not query the registry to resolve image digest and supported platforms
       --placement-pref-add=      Add a placement preference
       --placement-pref-rm=      Remove a placement preference
       --publish-add=      Add or update a published port#添加或更新外部端口信息;
       --publish-rm=      Remove a published port by its target port#删除端口信息;
       -q, --quiet[=false]      Suppress progress output#不显示进度信息;
       --read-only[=false]      Mount the container's root filesystem as read only#指定容器的文件系统为只读;
       --replicas=      Number of tasks#指定服务实例的复制份数;
       --replicas-max-per-node=0      Maximum number of tasks per node (default 0 = unlimited)
       --reserve-cpu=      Reserve CPUs
       --reserve-memory=0      Reserve Memory
       --restart-condition=""      Restart when condition is met ("none"|"on-failure"|"any")
       --restart-delay=      Delay between restart attempts (ns|us|ms|s|m|h)
       --restart-max-attempts=      Maximum number of restarts before giving up
       --restart-window=      Window used to evaluate the restart policy (ns|us|ms|s|m|h)
       --rollback[=false]      Rollback to previous specification#回滚到上次配置;
       --rollback-delay=0s      Delay between task rollbacks (ns|us|ms|s|m|h)
       --rollback-failure-action=""      Action on rollback failure ("pause"|"continue")
       --rollback-max-failure-ratio=0      Failure rate to tolerate during a rollback
       --rollback-monitor=0s      Duration after each task rollback to monitor for failure (ns|us|ms|s|m|h)
       --rollback-order=""      Rollback order ("start-first"|"stop-first")
       --rollback-parallelism=0      Maximum number of tasks rolled back simultaneously (0 to roll back all at once)
       --secret-add=      Add or update a secret on a service#添加或更新服务上的秘密数据;
       --secret-rm=      Remove a secret#删除服务上的秘密数据;
       --stop-grace-period=      Time to wait before force killing a container (ns|us|ms|s|m|h)
       --stop-signal=""      Signal to stop the container
       --sysctl-add=      Add or update a Sysctl option
       --sysctl-rm=      Remove a Sysctl option
       -t, --tty[=false]      Allocate a pseudo-TTY
       --ulimit-add=[]      Add or update a ulimit option
       --ulimit-rm=      Remove a ulimit option
       --update-delay=0s      Delay between updates (ns|us|ms|s|m|h)
       --update-failure-action=""      Action on update failure ("pause"|"continue"|"rollback")
       --update-max-failure-ratio=0      Failure rate to tolerate during an update
       --update-monitor=0s      Duration after each task update to monitor for failure (ns|us|ms|s|m|h)
       --update-order=""      Update order ("start-first"|"stop-first")
       --update-parallelism=0      Maximum number of tasks updated simultaneously (0 to update all at once)#更新执行的并发数;
       -u, --user=""      Username or UID (format: [:])#指定用户信息,UID:[GID];
       --with-registry-auth[=false]      Send registry authentication details to swarm agents
       -w, --workdir=""      Working directory inside the container#指定容器中的工作目录位置。

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

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

相关文章

力扣:至少是其他数字两倍的最大数(详解)

前言&#xff1a;本期是关于至少是其他数字两倍的最大数的详解&#xff0c;内容包括四大模块&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读&#xff0c;今天你c了吗&#xff1f; 题目&#xff1a; 给你一个整数数组 nums &#xff0c;其中总…

如何对企业网站进行优化?(网站怎样优化seo)

探析企业网站优化怎么做才有效果&#xff1f; 在互联网营销时代&#xff0c;搜索引擎一直是推广流量的重要途径&#xff0c;越来越多的企业已经涉足搜索引擎优化行业&#xff0c;众多企业做网站优化是为了网站提升企业知名度和流量&#xff0c;争取以更低成本做更高转化、更快…

公务机包机|公务飞行包机攻略解答

公务机是一种在行政事务和商业活动中用作交通工具的飞行&#xff0c;也被称为行政机或商用飞机。公务机包机程序简单&#xff0c;不仅可以享受不一致的尊崇服务&#xff0c;而且可以避免巨额投资和日常管理的繁琐事务。    公务机是指在行政事务和商业活动中用作交通工具的飞…

最重要的定理:隐函数定理

多元函数变限积分求导问题

整理网上拷贝的文档格式-去掉代码前的序号

1、整理换行 第一步&#xff0c;将所有的纯换行的地方替换为空&#xff08;也就是删除他们&#xff09;&#xff0c;我这里是将选择题的各选项之间的换行替换为两个制表符&#xff08;两个Tab键&#xff09;&#xff1a; 执行这一步的时候注意将通配符的选项勾选上&#xff0c…

利用Python计算离散点构成曲线的曲率

目录一、实现原理1.1、计算点到直线的距离——海伦公式参考链接计算曲率就是为了求这段弧长对应的半径&#xff0c;也就是说&#xff0c;我们把曲线看成圆的弧长就行&#xff0c;那么问题就简单了。一、实现原理 1.1、计算点到直线的距离——海伦公式 如下图所示&#xff0c;…

【MyBatis】第四篇:浅聊resultType

前提 学生对象不会变如下&#xff1a; package com.xzd.domain;public class Student {Integer sid;String sname;int sage;String ssex;public Student() {}public Student(Integer sid, String sname, int sage, String ssex) {this.sid sid;this.sname sname;this.sage …

如何把图片转换成word文档?说一个转换途径

我们时常需要将图片上的文字资料归纳整理下来&#xff0c;转成Word文档的形式会方便很多&#xff0c;下面给大家介绍一下如何把图片转换成word文档&#xff0c;有多种方式&#xff0c;咱们自由选择。方式一、直接添加图片转换成Word这种方式非常简单&#xff0c;我们打开Word或…

校园IP网络广播系统方案

北京恒星科通发布于2023-2-2 一、校园IP网络广播系统概述 校园I P网络广播系统&#xff0c;是构建在当前广泛使用的TCP/IP通讯网络基础上的新一代交互式公共广播系统。系统采用分布式服务器架构&#xff0c;容量可以根据需要不断扩展&#xff0c;可以在局域网或者广域网内运行…

21-死锁的解除及银行家算法

预防死锁 不允许死锁的发生 静态策略:预防思索 破坏互斥条件 如果能把互斥使用的资源改造为允许共享使用,则系统不会进入死锁状态,比如SPOOLing技术,操作系统可以采用SPOOLing技术把独占设备在逻辑上改造为共享设备。 使用了SPOOLing技术后,在各进程看来,自己对打印机资源的…

2023年java面试常考知识点(12题)

一. 接⼝与抽象类区别 1、⼀个类声明可否既是abstract的,⼜是final的? 不能,这两个修式符⽭盾&#xff08;abstract就是要被继承&#xff09; 2、抽象类不⼀定包含抽象⽅法 3、有抽象⽅法,则⼀定是抽象类 4、抽象类不能被实例化&#xff0c;⼀般⽤作基类使⽤&#xff1b; a. 类…

数学建模比赛超全整理【数学建模有哪些比赛?】【全网最全数模整理】

文章目录一.全国大学生数学建模竞赛二.美国大学生数学建模竞赛三、中国研究生数学建模竞赛四、认证杯&#xff08;小美赛&#xff09;五、华数杯&#xff08;国内赛和国际赛&#xff09;六.MathorCup高校数学建模挑战赛七.全国大学生电工数学建模竞赛八.深圳杯九.数维杯大学生数…

用vue3+vant4开发的简单小众电商购物项目模板(纯前端)

简单录制如下 主要练习下界面和交互&#xff0c;顺带简单了解下 vue3 语法。 简单截图如下 首页 首页-猜你喜欢 分类 购物车 个人页面 部分文件代码 底部导航文件 <template><div class"nav" id"myNav"><divclass"nav-item-box"v…

Oracle VM VirtualBox  VMware下载使用教程

一、Oracle VM VirtualBox 使用教程官网&#xff08;https://www.virtualbox.org/wiki/Downloads&#xff09;下载安装包&#xff0c;此处选择下载的为windows版本点击安装包&#xff0c;进行安装新建虚拟机name&#xff1a;自定义虚拟机名称Folder&#xff1a;安装文件夹ISO I…

postgres源码解析48 Btree节点分裂点确认流程--1

由于Btree数据结构特性&#xff0c;当节点达到上溢条件时会发生分裂&#xff0c;进而保持Btree的原本特性 B树 详解及C语言简单实现&#xff0c;在之前的postgres 源码解析 45 btree分裂流程_bt_split已对分裂流程进行讲解&#xff0c;接下来将从源码角度学习postgres btree分裂…

揭密Realtek 致命漏洞:超过 1 亿次尝试破解物联网设备

国际知名白帽黑客、东方联盟创始人郭盛华警告说&#xff0c;自 2022 年 8 月开始&#xff0c;利用 Realtek Jungle SDK 中现已修补的关键远程代码执行漏洞进行攻击的攻击企图激增。 据郭盛华透露&#xff0c;截至 2022 年 12 月&#xff0c;正在进行的活动据称已记录了 1.34 亿…

前端sdk - 埋点

目录前端sdk 之小满np安装01 搭建环境01-项目目录01-2 依赖包01-3 rollup.config.js01-4 tsconfig.json 28行01-5 package.json01-6 src / core / index.ts01-7打包效果02 初始化 Tracher02-1 core / index.ts02-2 types/ index.ts03 重写history事件 监听history | hash 路由等…

【Spring Cloud Alibaba】(一)微服务介绍 及 Nacos注册中心实战

文章目录前言I、微服务与Spring CloudII、Nacos 注册中心III、Spring Cloud Alibaba Nacos 实战1、新建父工程2、新建demo-a 服务3、新建 demo-b 服务4、实现服务调用&#xff1a;传统方式5、实现服务调用&#xff1a;NacosRibbon方式总结最后前言 Spring Cloud Alibaba微服务…

JS 设计模式(2)-- 复习

目录 策列模式 代理模式 观察者模式 发布订阅模式 模块模式 策列模式 策略模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使他们可以相互替换&#xff0c;且算法的变化不会影响使用算法的用户&#xff0c;策列模式属于对象行为模式&#xff0c;它通过…

Java面试题(自用-持续更新)

本文目录如下&#xff1a;Java面试题一、基础知识JDK 和 JRE 有什么区别&#xff1f;String 属于基础的数据类型吗&#xff1f;基础类型有哪些?String str"xqz"与 String strnew String("xqz")一样吗&#xff1f;java 中操作字符串都有哪些类&#xff1f;…