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

1、docker node ps 简介

docker node ps 是是用来列出 Docker Swarm 集群中所有节点上正在运行的服务实例的命令。列出Docker所知道的节点上的所有任务。可以使用-f--filter标记进行过滤。

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

注意:这是一个集群管理命令,必须在集群管理器节点上执行。

2、docker node ps 语法

docker node ps [OPTIONS] [NODE...]

3、docker node ps 命令

1)查看其在各个节点上的运行情况

docker node ps swarm-manager1

NAME                                IMAGE        NODE            DESIRED STATE  CURRENT STATE
redis.1.7q92v0nr1hcgts2amcjyqg3pq   redis:3.0.6  swarm-manager1  Running        Running 5 hours
redis.6.b465edgho06e318egmgjbqo4o   redis:3.0.6  swarm-manager1  Running        Running 29 seconds
redis.7.bg8c07zzg87di2mufeq51a2qp   redis:3.0.6  swarm-manager1  Running        Running 5 seconds
redis.9.dkkual96p4bb3s6b10r7coxxt   redis:3.0.6  swarm-manager1  Running        Running 5 seconds
redis.10.0tgctg8h8cech4w0k0gwrmr23  redis:3.0.6  swarm-manager1  Running        Running 5 seconds

2)过滤 (--filter)

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

目前支持的过滤器有:

  • name
  • id
  • label
  • desired-state

3)name

过滤器匹配任务名称的全部或部分内容。以下过滤器将匹配所有名称包含 redis 字符串的任务。

docker node ps -f name=redis swarm-manager1

NAME                                IMAGE        NODE            DESIRED STATE  CURRENT STATE
redis.1.7q92v0nr1hcgts2amcjyqg3pq   redis:3.0.6  swarm-manager1  Running        Running 5 hours
redis.6.b465edgho06e318egmgjbqo4o   redis:3.0.6  swarm-manager1  Running        Running 29 seconds
redis.7.bg8c07zzg87di2mufeq51a2qp   redis:3.0.6  swarm-manager1  Running        Running 5 seconds
redis.9.dkkual96p4bb3s6b10r7coxxt   redis:3.0.6  swarm-manager1  Running        Running 5 seconds
redis.10.0tgctg8h8cech4w0k0gwrmr23  redis:3.0.6  swarm-manager1  Running        Running 5 seconds

4)id

过滤器匹配任务的 ID。

docker node ps -f id=bg8c07zzg87di2mufeq51a2qp swarm-manager1

NAME                                IMAGE        NODE            DESIRED STATE  CURRENT STATE
redis.7.bg8c07zzg87di2mufeq51a2qp   redis:3.0.6  swarm-manager1  Running        Running 5 seconds

5)label

过滤器基于标签的存在或标签和值匹配任务。

以下过滤器将匹配具有 usage 标签的任务,无论其值如何。

docker node ps -f "label=usage"

NAME                               IMAGE        NODE            DESIRED STATE  CURRENT STATE
redis.6.b465edgho06e318egmgjbqo4o  redis:3.0.6  swarm-manager1  Running        Running 10 minutes
redis.7.bg8c07zzg87di2mufeq51a2qp  redis:3.0.6  swarm-manager1  Running        Running 9 minutes

6)desired-state

过滤器可以取 running、shutdown 或 accepted 的值。

格式化输出 (--format)

格式化选项 (--format) 使用 Go 模板对任务进行漂亮打印输出。

下面列出了 Go 模板的有效占位符:

点位符

描述

.ID

任务 ID

.Name

任务名称

.Image

任务镜像

.Node

节点 ID

.DesiredState

任务所期望的状态 (running, shutdown 或 accepted)

.CurrentState

任务当前的状态

.Error

错误信息

.Ports

任务发布的端口

当使用 --format 选项时,node ps 命令将按照模板声明精确输出数据,或者在使用 table 指令时,还会包含列标题。

以下示例使用没有标题的模板,并为所有任务输出 Name 和 Image 条目,中间用冒号 (:) 分隔:

docker node ps --format "{{.Name}}: {{.Image}}"

top.1: busybox
top.2: busybox
top.3: busybox

4、命令选项

命令

描述

--filter,-f

根据指定条件过滤输出结果

--format

使用 Go 模板格式化输出任务

--no-resolve

不将 ID 映射到名称

--no-trunc

不截断输出结果

--quiet , -q

仅显示任务 ID

5、子命令


命令

描述

docker node demote

将一个或多个节点从 Swarm 中的管理节点降级

docker node inspect

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

docker node ls

列出Swarm中的节点

docker node promote

将一个或多个节点提升为 Swarm 中的管理节点

docker node ps

列出运行在一个或多个节点上的任务,默认为当前节点

docker node rm

从 Swarm 中移除一个或多个节点

docker node update

更新一个节点

推荐文档

相关文档

大家感兴趣的内容

随机列表