2015-07-12 2 views
7

Создать данные только контейнер:докер резервное копирование и восстановление MongoDB

docker create -v /mongodb_data --name mongodb_data mongo 

Создать monogdb контейнер:

docker run --volumes-from mongodb_data --name mongo_db --restart always -d mongo 

Затем использовать MongoDB в моем собственном контейнере я использую команду ссылка:

--link mongo_db:mongo 

Итак, все работает нормально. Теперь я хочу сделать резервную копию MongoDB согласно документации: http://docs.docker.com/userguide/dockervolumes/#backup-restore-or-migrate-data-volumes и эта команда:

docker run --volumes-from mongodb_data -v $(pwd):/backup busybox tar cvf /backup/backup.tar /mongodb_data 

Однако созданный архивный файл имеет только пустую /mongodb_data папки. Папка не содержит ни одного файла.

Любые идеи в чем-то не так? Я использую docker 1.7 на ubuntu 14.04 LTS.

ответ

4

Проблема заключается в том, что ваш только контейнер данных. Вы делаете свой том с путём /mongodb_data, который не хранит данные mongo db. По умолчанию путь хранения mongo db равен /data/db (согласно this # Где хранить раздел данных)

В результате ваши данные mongodb не сохраняются в контейнере данных. Так вот обходной путь:

  • копия /data/db в /mongodb_data в вашем MongoDB контейнере docker exec -it mongo_db bash затем cp -r /data/db/* /mongodb_data/

  • сделать резервную копию, следуя doc вы упомянули

  • построить новые данные только контейнер и загрузить резервную копию

  • удалить текущий mongo_db контейнер и воссоздать новый с th е новые данные только контейнер

ИЛИ, вы можете изменить ваш mongodb конфигурации, чтобы изменить каталог по умолчанию /mongodb_data как только вы скопировали все данные из /data/db в /mongodb_data. Вы можете найти это полезный Changing MongoDB data store directory

0

Вы можете использовать этот image, что обеспечивает Docker контейнер для многих рабочих мест (импорт, экспорт, автосамосвалы)

Смежные вопросы