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

1、docker stack services 简介

docker stack services 命令是用于列出一个堆栈中的所有服务。这是一个在 Docker Swarm mode 中使用的命令,它可以帮助快速地查看堆栈中的所有服务的状态。

注意:

此命令是一个集群管理命令,必须在 Swarm 管理节点上执行。有关管理节点和工作节点的详细信息,请参阅文档中的 Swarm 模式部分。

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

2、docker stack services 语法

docker stack services [OPTIONS] STACK

3、docker stack services 命令

1)显示myapp栈中的所有服务

docker stack services myapp

ID            NAME            REPLICAS  IMAGE                                                                          COMMAND
7be5ei6sqeye  myapp_web       1/1       nginx@sha256:23f809e7fd5952e7d5be065b4d3643fbbceccd349d537b62a123ef2201bc886f
dn7m7nhhfb9y  myapp_db        1/1       mysql@sha256:a9a5b559f8821fe73d58c3606c812d1c044868d42c63817fa5125fd9d8b7b539

2)过滤 (--filter)

过滤标志( -f --filter )的格式是键值对,格式为 key=value。如果有多个过滤器,那么可以传递多个标志(例如 --filter "foo=bar" --filter "bif=baz")。多个过滤标志被组合为 OR 过滤器。

以下命令展示了 web 和 db 两个服务:

docker stack services --filter name=myapp_web --filter name=myapp_db myapp

ID            NAME            REPLICAS  IMAGE                                                                          COMMAND
7be5ei6sqeye  myapp_web       1/1       nginx@sha256:23f809e7fd5952e7d5be065b4d3643fbbceccd349d537b62a123ef2201bc886f
dn7m7nhhfb9y  myapp_db        1/1       mysql@sha256:a9a5b559f8821fe73d58c3606c812d1c044868d42c63817fa5125fd9d8b7b539

当前支持的过滤器有:

  • id / ID (--filter id=7be5ei6sqeye, 或 --filter ID=7be5ei6sqeye)
  • label (--filter label=key=value)
  • mode (--filter mode=replicated, 或 --filter mode=global)

Swarm: 不支持

  • name (--filter name=myapp_web)
  • node (--filter node=mynode)

Swarm: 不支持

  • service (--filter service=web)

Swarm: 不支持

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

格式化选项 ( --format ) 使用 Go 模板来漂亮地打印服务输出。

Go 模板的有效占位符如下:

占位符

描述

.ID

服务ID

.Name

服务名称

.Mode

服务模式(复制,全局)

.Replicas

服务副本

.Image

服务镜像

当使用 --format 选项时,stack services 命令将会根据模板声明的方式准确地输出数据,或者当使用 table 指令时,还会包括列标题。

以下示例使用了一个无标题的模板,并为所有服务输出由冒号(:)分隔的 ID,模式和副本条目:

docker stack services --format "{{.ID}}: {{.Mode}} {{.Replicas}}"

0zmvwuiu3vue: replicated 10/10
fm6uf97exkul: global 5/5 codedocker stack services --format "{{.ID}}: {{.Mode}} {{.Replicas}}"

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

docker stack services ls --format json
{"ID":"0axqbl293vwm","Image":"localstack/localstack:latest","Mode":"replicated","Name":"myapp_localstack","Ports":"*:4566-\u003e4566/tcp, *:8080-\u003e8080/tcp","Replicas":"0/1"}
{"ID":"384xvtzigz3p","Image":"redis:6.0.9-alpine3.12","Mode":"replicated","Name":"myapp_redis","Ports":"*:6379-\u003e6379/tcp","Replicas":"1/1"}
{"ID":"hyujct8cnjkk","Image":"postgres:13.2-alpine","Mode":"replicated","Name":"myapp_repos-db","Ports":"*:5432-\u003e5432/tcp","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 stack config

输出最终的配置文件,进行合并和插值后

docker stack deploy

部署一个新的 stack 或更新现有的 stack

docker stack ls

列出 stacks

docker stack ps

列出 stack 中的任务

docker stack rm

移除一个或多个 stacks

docker stack services

列出 stack 中的服务

推荐文档

相关文档

大家感兴趣的内容

随机列表