如何确定哪些容器使用 docker 卷?
How to determine what containers use the docker volume?
假设我有一个卷并且我知道它的名称或 ID。
我想确定使用该卷的容器列表(它们的名称或 ID)。
我可以使用什么命令来检索此信息?
我认为它可以存储在 docker volume inspect <id>
命令的输出中,但它除了挂载点 ("/var/lib/docker/volumes/<id>"
) 之外没有任何用处。
docker ps
可以按卷过滤以显示安装给定卷的所有容器:
docker ps -a --filter volume=VOLUME_NAME_OR_MOUNT_POINT
参考:https://docs.docker.com/engine/reference/commandline/ps/#filtering
这与 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()
下面的脚本将显示每个卷以及使用它的容器:
#!/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
按容器列出卷有点棘手,所以这是 reader 的练习,但上面的内容应该足够了,除非你有很多 containers/volumes.
假设我有一个卷并且我知道它的名称或 ID。
我想确定使用该卷的容器列表(它们的名称或 ID)。
我可以使用什么命令来检索此信息?
我认为它可以存储在 docker volume inspect <id>
命令的输出中,但它除了挂载点 ("/var/lib/docker/volumes/<id>"
) 之外没有任何用处。
docker ps
可以按卷过滤以显示安装给定卷的所有容器:
docker ps -a --filter volume=VOLUME_NAME_OR_MOUNT_POINT
参考:https://docs.docker.com/engine/reference/commandline/ps/#filtering
这与 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()
下面的脚本将显示每个卷以及使用它的容器:
#!/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
按容器列出卷有点棘手,所以这是 reader 的练习,但上面的内容应该足够了,除非你有很多 containers/volumes.