2015-07-12 20 views
7

Tạo dữ liệu chỉ chứa:Docker sao lưu và khôi phục MongoDB

docker create -v /mongodb_data --name mongodb_data mongo 

Tạo chứa monogdb:

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

Sau đó, để sử dụng MongoDB trong container riêng của tôi, tôi sử dụng lệnh liên kết:

--link mongo_db:mongo 

Vì vậy, mọi thứ hoạt động tốt. Bây giờ tôi muốn sao lưu MongoDB theo các tài liệu: http://docs.docker.com/userguide/dockervolumes/#backup-restore-or-migrate-data-volumes và lệnh này:

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

Tuy nhiên file tar tạo có chỉ là một sản phẩm nào /mongodb_data thư mục. Thư mục không chứa một tệp duy nhất.

Bất kỳ ý tưởng whats sai? Tôi đang sử dụng docker 1.7 trên ubuntu 14.04 LTS.

Trả lời

4

Vấn đề là vùng chứa dữ liệu của bạn. Bạn tạo âm lượng với đường dẫn /mongodb_data không lưu trữ bất kỳ dữ liệu db mongo nào. Theo mặc định, đường dẫn lưu trữ mongo db là /data/db (theo this # Nơi lưu trữ phần dữ liệu)

Kết quả là, dữ liệu mongodb của bạn không được lưu trong vùng chứa dữ liệu duy nhất của bạn. Vì vậy, đây là một cách giải quyết:

  • bản sao /data/db để /mongodb_data trong container MongoDB bạn docker exec -it mongo_db bash sau đó cp -r /data/db/* /mongodb_data/

  • tạo bản sao lưu bằng cách làm theo các doc bạn đề cập

  • xây dựng một dữ liệu mới chỉ chứa và tải bản sao lưu

  • xóa vùng chứa hiện tại mongo_db và tạo lại vùng chứa mới với thứ e dữ liệu mới chỉ chứa

OR, bạn có thể sửa đổi mongodb cấu hình của bạn, để thay đổi thư mục mặc định để /mongodb_data khi bạn sao chép tất cả dữ liệu từ /data/db để /mongodb_data. Bạn có thể tìm thấy điều này hữu ích Changing MongoDB data store directory

0

Bạn có thể sử dụng image này cung cấp thùng chứa Docker cho nhiều công việc (nhập khẩu, xuất khẩu, dump)

Các vấn đề liên quan