当前位置: 首页 > 知识库问答 >
问题:

如何确定哪些容器使用docker卷?

卫嘉佑
2023-03-14

假设我有一个卷,我知道它的名称或id。

我想确定使用卷的容器列表(它们的名称或id)。

我可以使用什么命令来检索这些信息?

我认为它可以存储在docker volume inspect的输出中

共有3个答案

胡向阳
2023-03-14

下面的脚本将显示每个卷及其使用的容器:

#!/bin/sh

volumes=$(docker volume ls  --format '{{.Name}}')

for volume in $volumes
do
  echo $volume
  docker ps -a --filter volume="$volume"  --format '{{.Names}}' | sed 's/^/  /'
done

按容器列出卷要稍微复杂一些,因此这是读者的练习,但除非您有许多容器/卷,否则上面的内容就足够了。

华景同
2023-03-14

这与jwodder的建议有关,如果对某人有任何帮助的话。它基本上给出了所有卷的摘要,以防你有多个卷,并且不确定哪一卷是哪一卷。

import io
import subprocess
import pandas as pd


results = subprocess.run('docker volume ls', capture_output=True, text=True)

df = pd.read_csv(io.StringIO(results.stdout),
                 encoding='utf8',
                 sep="    ",
                 engine='python')

for i, row in df.iterrows():
    print(i, row['VOLUME NAME'])
    print('-' * 20)
    cmd = ['docker', 'ps', '-a', '--filter', f'volume={row["VOLUME NAME"]}']
    print(subprocess.run(cmd,
           capture_output=True, text=True).stdout)
    print()
曾修真
2023-03-14

docker ps可以按卷过滤以显示挂载给定卷的所有容器:

docker ps -a --filter volume=VOLUME_NAME_OR_MOUNT_POINT

参考:https://docs.docker.com/engine/reference/commandline/ps/#filtering

 类似资料:
  • 问题内容: 是否有任何工具可以列出应用程序有效使用哪些类以及何时有效使用某些类,甚至更好地自动修剪JAR库以仅提供被引用和使用的类? 问题答案: 请记住,正如停机问题所证明的那样,您不能肯定地说某个特定类已使用或未使用。至少在任何中等复杂的应用程序上。这是因为类不仅在编译时绑定,而且可以加载: 基于XML配置(例如Spring); 从属性文件加载(例如JDBC驱动程序名称); 动态添加注释; 由于

  • 问题内容: 我正在尝试通过以下方式为我的docker容器明确指定IP地址: 我收到以下错误: 我真的不在乎端口10000。我的目标是选择一个特定的容器IP,并将端口9000和9090暴露给主机。 我看了其他一些问题,但没有看到明确的语法来做到这一点 问题答案: 该参数用于将端口从容器转发到主机,而不用于分配IP。 没有简单的方法将固定IP分配给Docker容器,我强烈建议您不要尝试。而是重新架构您

  • 问题内容: 现有应用程序的类路径中有大量的JAR文件。一定要确保最初添加了所有JAR。显然没有使用某些JAR,我们已经删除了其中一些不需要的JAR,而没有引起任何问题。 如何确定正在使用哪些JAR,哪些是不需要的(除尝试和错误方法外)? 问题答案: Tattletale是一个很好的工具。它对字节码起作用,因此有可能通过反射使用某些类,而这些类不会出现在报告中。 这里( 链接不再有效 )是示例报告。

  • 我正在docker容器中设置一个应用程序。我希望这个应用程序能够与localstack堆栈容器localstack文档连接。当我运行时,容器会成功启动。我可以运行docker-compose文件中未包含的独立java应用程序,它将成功连接到localstack容器。但与localstack一起启动的应用程序无法连接。我看过docker文档和localstack文档,我想不出如何让这些东西彼此通信。

  • 我正在使用Hazelcast Imap接口以分布式方式锁定项目,而不是将项目放在map中,我只是调用lock方法,它似乎有效,但我不知道如何查询哪些项目当前被锁定,因为项目在map中不可用。有没有方法可以查询Hazelcast锁定的键?下面是示例代码:public void testMap_DistributedLock(){final Config hazelcastConfig=new Con

  • 我没有指定任何GC,我认为我的JVM默认情况下没有启用任何GC。 当然,我知道 OpenJDK8 默认使用并行GC,但我认为它应该可以通过命令行打印,如下所示: < code > Java-XX:print flags final | grep Use | grep GC 我期望输出包含< code > bool UseParallelOldGC = true { product } ,但它不是: