Как перечислить содержимое именованного тома в докере 1.9+?

Docker 1.9 добавил именованные тома, поэтому я...

docker volume create --name postgres-data

docker volume ls 

и я получаю

local               postgres-data

все хорошо до сих пор..

так как я вижу, что находится в именованном томе? Есть ли способ к нему подключиться к хост-системе. Как я могу для смонтированного каталога хоста?

Ответ 1

docker run --rm -i -v=postgres-data:/tmp/myvolume busybox find /tmp/myvolume

Объяснение: Создайте минимальный контейнер с инструментами для просмотра файлов томов (busybox), установите именованный том в каталоге контейнера (v=postgres-data:/tmp/myvolume), перечислите файлы томов (find /tmp/myvolume). Удалите контейнер, когда листинг сделан (--rm).

Ответ 2

вы можете запустить docker volume inspect postgres-data

и см. раздел Mountpoint результата

поэтому параметр source укажет на каталог хоста может быть /var/lib/docker/volumes/[volume_name]/_data

Ответ 3

Вот одна идея...

docker run -it --name admin -v postgres-data:/var/lib/postgresql/data ubuntu

то в интерактивной оболочке

ls /var/lib/postgresql/data 

Лучшие идеи приветствуются!

Ответ 4

Я использую эту удобную функцию для отображения содержимого моих томов:

dvolume() {
  local volume volumes_to_list=${1:-$(docker volume ls --quiet)}
  for volume in $volumes_to_list; do
    sudo ls -lRa "$(docker volume inspect --format '{{ .Mountpoint }}' "$volume")"
    echo
  done
}

Обратите внимание, что вы можете вызвать функцию двумя способами:

$ dvolume           # for each volume, list its content
$ dvolume <volume>  # list <volume> content

Ответ 5

Вероятно, бессмысленно, но все же:

sudo ls -l $(docker volume inspect myvolumename | jq -r '.[0].Mountpoint')

Проверьте страницу документа jq для деталей о том, как установить это.