場景:服務器要升級,以前在linux部署的mongodb沒有用docker,升級後,mongodb要用docker部署,並將原有的mongodb數據導入到docker部署的mongodb中。linux
1.在linux安裝的mongodb文件下導出mongodb數據mongodb
./bin/mongodump -h ip:port -d 數據庫名 -o linux環境下指定的文件夾 //若有用戶名,則加上 --username xxx --password xxxdocker
2.安裝docker :docker run -p 27018(容器外部訪問的端口):27017 -v $PWD/db:/data/db -d --name mymongo mongo --smallfiles
數據庫
--auth ,開啓帳戶驗證bash
設置密碼服務器
docker exec -it <docker_mongodb_name> mongo bashspa
user testrest
db.createUser( {code
user: "root",
pwd: "root",ip
roles: [ { role: "userAdminAnyDatabase", db: "test" } ]})
也能夠:-e MONGO_INITDB_ROOT_USERNAME=mongoadmin -e MONGO_INITDB_ROOT_PASSWORD=secret
參考文檔:https://docs.docker.com/samples/library/mongo/#mongo_initdb_root_username-mongo_initdb_root_password
3.進入docker mongodb容器:docker exec -it mymongo /bin/sh
在docker容器新建mongodb數據要導入的目錄,mkdir -p /opt/mongodbBack/
4.退出docker mongodb容器,進入真機linux
docker cp linux備份mongodb的數據文件(不是文件夾) mymongo(容器名稱或id):/opt/mongodbBack/
docker exec -it mymongo bash
執行: mongorestore -h localhost:27017 -d pac(數據庫名字,能夠隨便寫,存在不存在均可以) --dir /opt/mongoData/
至此,已完成docker mongodb的數據導入linux的mongodb數據
5.將docker mongodb的數據導出到真機中
docker exec -it mymongo /bin/bash
mongodump -h 127.0.0.1 --port 27017 -d test -o /test/mongodBack //在容器內部,導出數據到容器內部的指定文件夾
退出docker mongodb容器:docker cp <mongodb容器名>:/test/mongodBack/ /home/opt/mongodbData/(此爲真機目錄)