使用ubuntu中的Docker从文件夹中恢复mongodb转储

时间:2017-01-17 06:33:38

标签: mongodb docker

我是Docker和MongoDb的新手。 我使用下面的命令

为mongodb创建了一个容器
sudo docker run -v /data:/data --name my-mongodb -p 4000:27017 --entrypoint=mongod mongo:2.6.6 

我在某个文件夹中有转储..我想恢复数据..我尝试了不同的方式,如

sudo docker run -it --link mongotest:db 802e18e53eec mongorestore -h db /path/dump

但没有工作。

它说:

Unable to find image '802e18e53eec:latest' locally
Pulling repository docker.io/library/802e18e53eec
docker: Error: image library/802e18e53eec:latest not found.
See 'docker run --help'.

对此有何帮助?

由于

3 个答案:

答案 0 :(得分:4)

我想出了办法

  

注意:请简要说明您的问题。问题尚不清楚,请指定要在哪里进行还原并将数据还原到服务器数据库或ubuntu运行计算机中。如果从本地数据库进入服务器,请执行以下步骤:-

这是说明

将转储文件夹复制到服务器

scp -r /local_path/to/dump_folder root@111.222.33.4:/remote/path

SSH进入服务器

ssh root@111.222.33.4

从服务器根目录复制到docker容器内部

docker cp dump_folder mongodb:/dump_folder

进入mongodb docker容器

docker exec -it mongodb bash

检查复制的文件夹是否存在 ls(如果您将其命名为与本示例相同的文件夹,则应该看到dump_folder)

使用mongorestore

mongorestore --drop -d AppName dump_folder

答案 1 :(得分:2)

您必须使用exec才能在所需的容器中运行命令! run图片创建新容器!

答案 2 :(得分:0)

您可以轻松创建转储,并使用MongoDB从容器中获取转储,然后将其还原回而无需连接到容器

docker run --rm mongo:4.1 mongodump --host [container_ip] --archive --gzip | cat > dump_$(date '+%d-%m-%Y_%H-%M-%S').gz

您只需恢复它

cat [name_of_dump_file] | docker run --rm -i mongo:4.1 mongorestore --host [container_ip] --archive --drop --db=test