Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍Docker CLI 中 docker service ls 常用命令。

1、docker service ls 简介

docker service ls 命令是用于列出当前在集群中运行的所有服务。

此命令与Swarm orchestrator一起工作。

注意:

此命令是集群管理命令,必须在集群管理器节点上执行。要了解经理和工人,请参阅文档中的Swarm mode部分。

参考文档https://docs.docker.com/engine/reference/commandline/service_ls/

2、docker service ls 语法

docker service ls [OPTIONS]

3、docker service ls 命令

在管理节点上执行以下命令:

docker service ls

ID            NAME      MODE            REPLICAS             IMAGE
c8wgl7q4ndfd  frontend  replicated      5/5                  nginx:alpine
dmu1ept4cxcf  redis     replicated      3/3                  redis:3.0.6
iwe3278osahj  mongo     global          7/7                  mongo:3.3
hh08h9uu8uwr  job       replicated-job  1/1 (3/5 completed)  nginx:latest

REPLICAS 列显示服务的实际任务数量和期望任务数量。如果服务是 replicated-jobglobal-job,还会显示作业的完成状态,即已完成的任务数和作业将执行的总任务数。

1)过滤 (--filter)

过滤标记(-f 或 --filter)的格式为“key=value”。如果有多个过滤条件,则需要传递多个标志(例如,--filter "foo=bar" --filter "bif=baz")。

当前支持的过滤器有:

  • id
  • label
  • mode
  • name

2)id

id 过滤器根据服务的 ID 进行匹配,可以匹配整个或部分 ID。

例如,以下过滤器匹配具有 ID 为 0bcjw 的服务:

docker service ls -f "id=0bcjw"
ID            NAME   MODE        REPLICAS  IMAGE
0bcjwfh8ychr  redis  replicated  1/1       redis:3.0.6

3)label

label 过滤器根据标签的存在与否或标签及其值进行匹配。

以下过滤器匹配具有 project 标签的所有服务,而不考虑其值:

docker service ls --filter label=project
ID            NAME       MODE        REPLICAS  IMAGE
01sl1rp6nj5u  frontend2  replicated  1/1       nginx:alpine
36xvvwwauej0  frontend   replicated  5/5       nginx:alpine
74nzcxxjv6fq  backend    replicated  3/3       redis:3.0.6

以下过滤器仅匹配具有 project 标签且其值为 project-a 的服务:

docker service ls --filter label=project=project-a
ID            NAME      MODE        REPLICAS  IMAGE
36xvvwwauej0  frontend  replicated  5/5       nginx:alpine
74nzcxxjv6fq  backend   replicated  3/3       redis:3.0.6

4)mode

mode 过滤器根据服务的模式(replicated 或 global)进行匹配。

以下过滤器仅匹配全局服务:

docker service ls --filter mode=global
ID                  NAME                MODE                REPLICAS            IMAGE
w7y0v2yrn620        top                 global              1/1                 busybox

5)name

name 过滤器根据服务的名称进行匹配,可以匹配整个或部分名称。

以下过滤器匹配名称中包含 redis 的服务:

docker service ls --filter name=redis
ID            NAME   MODE        REPLICAS  IMAGE
0bcjwfh8ychr  redis  replicated  1/1       redis:3.0.6

6)格式化输出 (--format)

使用格式化选项(--format),可以使用 Go 模板对服务的输出进行美观打印。

以下是 Go 模板中可用的占位符列表:

占位符

描述

.ID

服务 ID

.Name

服务名称

.Mode

服务模式(replicated、global)

.Replicas

服务副本数量

.Image

服务镜像

.Ports

以入口模式发布的服务端口

使用 --format 选项时,service ls 命令将根据模板的声明输出数据,或者当使用 table 指令时,还会包括列标题。

以下示例使用没有列标题的模板,输出所有服务的 ID、Mode 和 Replicas 条目,并用冒号 (:) 分隔:

docker service ls --format "{{.ID}}: {{.Mode}} {{.Replicas}}"

0zmvwuiu3vue: replicated 10/10
fm6uf97exkul: global 5/5

要以 JSON 格式列出所有服务,使用 json 指令:

docker service ls --format json
{"ID":"ssniordqolsi","Image":"hello-world:latest","Mode":"replicated","Name":"hello","Ports":"","Replicas":"0/1"}

4、命令选项

选项

默认值

描述

--filter, -f

根据提供的条件筛选输出

--format

使用自定义模板格式化输出:

'table':以带有列标题的表格格式打印输出(默认)

'table TEMPLATE':使用给定的 Go 模板

以表格格式打印输出'json':以 JSON 格式打印输出

'TEMPLATE':使用给定的 Go 模板打印输出。

有关使用模板格式化输出的更多信息,请参阅

https://docs.docker.com/go/formatting/

--quiet, -q

仅显示 ID

5、子命令

命令

描述

docker service create

创建新的服务

docker service inspect

显示一个或多个服务的详细信息

docker service logs

获取一个服务或任务的日志

docker service ls

列出服务

docker service ps

列出一个或多个服务的任务

docker service rm

删除一个或多个服务

docker service rollback

恢复服务配置的更改

docker service scale

缩放一个或多个复制的服务

docker service update

更新一个服务的配置

推荐文档

相关文档

大家感兴趣的内容

随机列表