Supongamos que tengo un volumen y sé su nombre o id.
Quiero determinar la lista de contenedores (sus nombres o ID) que usan el volumen.
¿Qué comandos puedo usar para recuperar esta información?
Pensé que se puede almacenar en la salida del comando docker volume inspect <id> pero no me da nada útil aparte del punto de montaje ( "/var/lib/docker/volumes/<id>" ).
docker ps puede filtrar por volumen para mostrar todos los contenedores que montan un volumen determinado:
docker ps -a --filter volume=VOLUME_NAME_OR_MOUNT_POINTReferencia: https://docs.docker.com/engine/reference/commandline/ps/#filtering
Esto está relacionado con la sugerencia de jwodder , si es de alguna ayuda para alguien. Básicamente ofrece el resumen de todos los volúmenes, en caso de que tenga más de un par y no esté seguro de cuál es cuál.
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()La siguiente secuencia de comandos mostrará cada volumen con los contenedores que lo utilizan:
#!/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/^/ /' doneEnumerar volúmenes por contenedor es un poco más complicado, por lo que es un ejercicio para el lector, pero lo anterior debería ser suficiente a menos que tenga muchos contenedores/volúmenes.