wsl的docker备份mongo和迁移

wsl原版本Ubuntu20.04迁移到新版本Ubuntu22.04

一、确定版本

bash 复制代码
root@LAPTOP-AFO65SIR:/home/fantasy# docker exec mongo mongod --version
db version v5.0.5
Build Info: {
    "version": "5.0.5",
    "gitVersion": "d65fd89df3fc039b5c55933c0f71d647a54510ae",
    "openSSLVersion": "OpenSSL 1.1.1f  31 Mar 2020",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "ubuntu2004",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

二、提交容器为新镜像

bash 复制代码
# 首先,停止容器以保证数据一致性
docker stop mongo
# 将当前容器状态提交为一个新的镜像,并明确指定版本标签
docker commit mongo my-mongo-5.0.5

三、将镜像保存为文件

bash 复制代码
# 将镜像保存为 .tar 文件,方便传输
docker save -o my-mongo-5.0.5.tar my-mongo-5.0.5

四、 在新环境加载和运行

bash 复制代码
# 在新机器上加载镜像文件
docker load -i my-mongo-5.0.5.tar
# 运行新容器(注意:数据已包含在镜像中,但为了持久化,仍建议挂载卷)
docker run -d --name my-mongo -p 27017:27017 my-mongo-5.0.5

五、验证

bash 复制代码
检查容器是否运行
docker ps | grep my-mongo

六、从原容器内部复制数据目录

bash 复制代码
# 1. (如果之前停止了)先启动容器
docker start <你的容器名称>
# 2. 将容器内的数据目录复制到宿主机当前目录
docker cp <你的容器名称>:/data/db ./mongo_data_backup/
# 3. 打包数据目录
tar czf mongo_data_backup.tar.gz mongo_data_backup/

七、将镜像和数据打包成文件

bash 复制代码
将新创建的本地镜像保存为 .tar 文件
docker save -o my-mongo-5.0.5.tar my-mongo:5.0.5

现在得到了两个关键文件:

- my-mongo-5.0.5.tar (包含MongoDB 5.0.5程序的镜像)

- mongo_data_backup.tar.gz (包含所有数据库数据)

八、传输文件到新服务器

把上述两个文件传输到新服务器

九、在新服务器上恢复并运行

bash 复制代码
# 在新机器上加载镜像文件
docker load -i my-mongo-5.0.5.tar
# 运行新容器(注意:数据已包含在镜像中,但为了持久化,仍建议挂载卷)
docker run -d --name my-mongo -p 27017:27017 my-mongo-:5.0.5
docker cp /tmp/mongo_dump/ mongo-new:/tmp/
docker exec mongo-new sh -c 'mongorestore --drop /tmp/mongo_dump/'

十、启动并验证数据

bash 复制代码
root@LAPTOP-AFO65SIR:/home/fantasy# docker exec -it my-mongo mongosh
Current Mongosh Log ID: 6984123c9acd564e1a9194b2
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000
Using MongoDB:          5.0.5
Using Mongosh:          1.1.6

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

------
   The server generated these startup warnings when booting:
   2026-02-05T03:44:24.935+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
   2026-02-05T03:44:25.062+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
   2026-02-05T03:44:25.062+00:00: Soft rlimits for open file descriptors too low
------

Warning: Found ~/.mongorc.js, but not ~/.mongoshrc.js. ~/.mongorc.js will not be loaded.
  You may want to copy or rename ~/.mongorc.js to ~/.mongoshrc.js.
test>
bash 复制代码
test> show dbs
admin   8.19 kB
config  12.3 kB
local   8.19 kB
test    24.6 kB
test> use test
already on db test
test>
相关推荐
dys_Codemonkey6 小时前
如何在树莓派上用 VS Code 优雅直连内部的 Ubuntu 子系统/容器用来访问容器内的文件和代码?
linux·运维·ubuntu·树莓派
张道宁7 小时前
Windows 环境下 Docker 部署 YOLOv8 并集成 Spring Boot 完整指南
windows·yolo·docker
上海合宙LuatOS8 小时前
LuatOS核心库API——【 string】字符串操作
运维·服务器·物联网·junit·硬件工程·信息与通信·嵌入式实时数据库
徐子元竟然被占了!!8 小时前
Linux的cat
linux·运维·服务器
带娃的IT创业者8 小时前
WeClaw 离线消息队列实战:异步任务队列如何保证在服务器宕机时不丢失任何一条 AI 回复?
运维·服务器·人工智能·python·websocket·fastapi·实时通信
kc胡聪聪8 小时前
nginx的性能优化与监控
运维·nginx·性能优化
丈剑走天涯9 小时前
kubernetes java app 部署使用harbor私服 问题集合
java·容器·kubernetes
上海合宙LuatOS9 小时前
LuatOS核心库API——【sys】LuatOS运行框架
运维·服务器·物联网·硬件工程·lua·软件工程·信息与通信
运维行者_9 小时前
网络监控方案从零开始 -- 企业级完整指南
大数据·运维·服务器·网络·数据库·人工智能·自动化
IMPYLH10 小时前
Linux 的 b2sum 命令
linux·运维·服务器·bash