You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH访问Ubuntu实例,Docker内Mongo执行mongorestore报目录不存在错误

解决Docker中MongoDB mongorestore找不到dump目录的问题

这个错误的核心原因很直白——你在本地db目录执行docker exec命令时,mongorestore是在容器内部运行的,但容器里并没有你本地的dump文件夹,自然会提示找不到路径。下面给你几个可行的解决方案,根据你的实际情况选择:

方案一:利用已有的容器挂载路径(如果已经挂载过本地目录)

如果你启动Mongo容器时,已经通过-v参数将本地db目录挂载到了容器内的某个路径(比如/data/restore),那只需要把命令里的路径换成容器内的挂载路径即可:

docker exec -it mongo_db_container mongorestore -d collection_name /data/restore/dump

替换/data/restore为你实际的容器内挂载路径

方案二:先将本地dump目录拷贝到容器内,再恢复

如果你的容器没有挂载本地目录,可以先把本地的dump文件夹拷贝到容器的临时目录,再执行恢复:

  1. 拷贝本地dump到容器内的/tmp目录:
docker cp ./dump mongo_db_container:/tmp/
  1. 在容器内执行mongorestore:
docker exec -it mongo_db_container mongorestore -d collection_name /tmp/dump

方案三:用临时Mongo容器直接挂载本地目录恢复(推荐,无需修改现有容器)

这种方式不需要操作已运行的Mongo容器,直接启动一个临时Mongo镜像,挂载本地db目录后执行恢复:

docker run --rm --link mongo_db_container:mongo -v $(pwd):/data mongo mongorestore -h mongo -d collection_name /data/dump
  • --rm:执行完命令后自动删除临时容器
  • --link:让临时容器能连接到你的Mongo容器
  • -v $(pwd):/data:把当前本地db目录挂载到临时容器的/data路径
  • -h mongo:指定Mongo服务地址为连接的容器别名

额外注意事项

  • 确认dump目录结构:你的dump文件夹下应该是<dump-name>(对应目标数据库名),里面包含.bson和.json文件;如果是单个集合的备份,需要加上--collection <集合名>参数指定具体集合。
  • 验证容器名称:用docker ps命令确认你的Mongo容器确实叫mongo_db_container,避免拼写错误。
  • 认证相关:如果你的Mongo开启了用户名密码认证,需要在mongorestore命令中添加-u <用户名> -p <密码> --authenticationDatabase admin(替换为你的认证数据库)参数。

内容的提问来源于stack exchange,提问作者rghazali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:28:34