Как сделать резервную копию и восстановить именованный том докера, содержащий данные MongoDB - PullRequest
0 голосов
/ 11 июня 2019

У меня есть образ докера для моего mongoDB. Я хочу создать сценарий, который будет резервировать производственные данные и восстанавливать их на моем локальном компьютере, чтобы у меня была среда разработки, аналогичная производственной.

Вот часть моего docker-compose.yml

 mongo:
    image: "mongo:latest"
    container_name: "espace_client_mongo"
    volumes:
      - mongo-data:/data/db

Я хочу экспортировать данные, содержащиеся в mongo-data томе.

Документы утверждают, что я могу сделать это с:

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

но я не могу заставить это работать.

Когда я запускаю его, я получаю:

ec2-user@espace-client-prod prod]$ docker run --rm --volumes-from espace_client_mongo -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar ./backup
tar: ./backup/backup.tar: file is the archive; not dumped
./backup/
./backup/Caddyfile
./backup/docker-compose.yml
[ec2-user@espace-client-prod prod]$ ls
backup.tar  Caddyfile  docker-compose.yml

Он поместит файлы в текущей папке в папку для резервных копий. Это не то, что я хочу. Я хочу поместить содержимое тома докера в папку для резервных копий. Я что-то неправильно понимаю?

РЕДАКТИРОВАТЬ: я хотел бы сделать резервную копию и восстановить данные с помощью инструментов Mongo (Mongodump и Mongorestore)

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Я использую эту команду для резервного копирования данных из контейнера, обратите внимание на каталог "/data/db".

docker run --rm \
  --volumes-from espace_client_mongo \
  -v $(pwd):/backup \
  ubuntu bash -c "cd /data/db && tar cvf /backup/backup.tar ."
1 голос
/ 11 июня 2019

Вы можете найти данные для резервного копирования в каталоге /var/lib/docker/volumes/mongo-data/_data your на хост-компьютере.Это то, что у вас есть на /data/db внутри вашего контейнера.

Вам не нужно запускать дополнительный контейнер Docker только для резервного копирования ваших данных, если они у вас уже есть как том.Поэтому вам нужно всего лишь запустить sudo tar cvzf backup.tar.gz /var/lib/docker/volumes/mongo-data/_data с вашего хост-компьютера.

ОБНОВЛЕНИЕ

Поскольку вы хотите использовать mongodump, просто следуйте официальной документации для образа Docker, который вы используете:

$ docker exec some-mongo sh -c 'exec mongodump -d <database_name> --archive' > /some/path/on/your/host/all-collections.archive

¹ Обратите внимание, что этот том может иметь другое имя, возможно, с префиксом имени папки, из которой вы запускаете docker-compose.yml, если выничего не определил.

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