Ошибка резервного копирования тома Docker: Tar: MYCONTAINER_VOLUME: Невозможно выполнить статистику: нет такого файла или каталога - PullRequest
1 голос
/ 11 мая 2019

Я пытаюсь сделать резервную копию своего тома, как описано здесь в документации докера: https://docs.docker.com/storage/volumes/#backup-restore-or-migrate-data-volumes

Я запускаю команду с путем к тому:

docker run --rm --volumes-from MYCONTAINER -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /var/lib/docker/volumes/MYCONTAINER_VOLUME

... а также пытаюсь использовать только имя моего тома

docker run --rm --volumes-from MYCONTAINER -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar MYCONTAINER_VOLUME

, но независимо от того, что я получаю сообщение об ошибке, например: tar: MYCONTAINER_VOLUME: Cannot stat: No such file or directory

Этот том был создан и связан с контейнеромс docker-compose и использованием локального драйвера для тома.

Когда я запускаю docker volume ls Я получаю:

DRIVER              VOLUME NAME

local               MYCONTAINER_VOLUME

Может кто-нибудь сказать мне, что я с этим не так делаю?

Ответы [ 2 ]

1 голос
/ 11 мая 2019

Я понял, в чем проблема -

Последней частью команды должен быть путь к тому, смонтированному в КОНТЕЙНЕРЕ, а не путь к тому в ХОСТЕ.

Таким образом, в основном, формула для этой команды должна быть:

docker run --rm --volumes-from MYCONTAINER -v $(pwd):/backup ubuntu tar cvf /backup/MY_BACKUP.tar /PATH/INSIDE/CONTAINER/TO/VOLUME/data

... и это создаст MY_BACKUP.tar в текущем каталоге HOST.

также обязательно остановите контейнер перед архивированием тома, если это что-то вроде postgres, как в моем случае.

Затем, чтобы восстановить том, если вы используете docker-compose (поскольку у меня тоже были проблемы с этим, потому что документация не относится к ранее существующим контейнерам / томам, созданным таким образом)

1) ОСТАНОВИТЕ контейнер

2) Убедитесь, что MY_BACKUP.tar находится в корневом каталоге проекта HOST

3) пробег

docker run --rm --volumes-from MYCONTAINER -v $(pwd):/backup ubuntu bash -c "cd / && tar xvf /backup/MY_BACKUP.tar

4) перезапустить контейнер

Надеюсь, это кому-нибудь поможет, и я, безусловно, открыт для любых идей по оптимизации этого.

0 голосов
/ 11 мая 2019

В документации предполагается, что ваш контейнер имеет том, связанный с вашим контейнером.
Значение: ваш контейнер был запущен с объемом .
Пример:

$ docker run -d \
  --name devtest \
  --mount source=myvol2,target=/app \
  nginx:latest

По крайней мере, проверьте, есть ли у вас тома, созданные с помощью:

docker volume ls
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...