【问题标题】:How can I list docker container names along with node version如何列出 docker 容器名称以及节点版本
【发布时间】:2022-02-01 19:19:32
【问题描述】:

我想知道是否有一种智能方法可以输出所有 docker 名称以及它们为包含/服务运行的 node.js 版本。

我可以跑;

docker ps --format '{{.Names}}'

...获取所有名称的列表,但后来我被卡住了;

docker exec <NAME goes HERE> node -v

...为每个项目 NAME 一个一个地找出与其链接的 NODE.JS 版本(即使使用我的快速手指和复制/粘贴工具,这也有点乏味和耗时)

有没有办法将这两个命令合二为一来输出名称和节点版本?还是我们在这里进入了 linux-scripting-type 领域?!

请注意;我通过谷歌搜索找到了这些命令,并且只真正了解 docker 基础知识,例如停止/启动/列出内容...

非常感谢您收到的任何信息或答案!

【问题讨论】:

  • 在 Docker 级别,它无法告诉您有关容器或映像中的软件的任何信息; docker exec 命令是你能做的最好的,这确实意味着你需要编写某种脚本。
  • @Konflex - 我相信这里的命令将返回正在运行的 Docker 版本,而不是其中的 Node.JS 版本,所以不是我想要的 - 但还是谢谢你们!

标签: node.js linux docker command-line


【解决方案1】:

认为一个简单的 bash 脚本应该足够简单。我没有安装 docker,但您可能可以调整以下方法?

创建 script.sh 并授予它执行权限。

从终端

nano script.sh #paste in script below"

for container in `docker ps -q`; do 
  # show the name of the container
  docker inspect --format='{{.Name}}' $container;
  # run the command
  docker exec {{.Name}} node -v
done

使脚本可执行

chmod u+x script.sh

运行脚本

./script.sh

应该看到打印到 tty 的节点版本

【讨论】:

  • 没有特别的理由将脚本保存在文件中;如果您愿意,可以简单地将其粘贴到命令行中。
  • 另外,请尝试shellcheck.net 向您指出一些风格问题,并提供修复建议。
  • OP 已经想出了如何获取名称列表;我不明白你为什么要返回ps -q 来获取他们的 ID。
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 2020-03-08
  • 2017-03-06
  • 2013-05-27
相关资源
最近更新 更多