MongoDB容器退出代码14错误,在使用带卷路径的MongoDB容器时,遇到了退出代码14错误。

16
version: "3"
services:
   mongo:
      image: mongo
      working_dir: /c/data/
      ports:
       - 27017:27017
      deploy:
        replicas: 1
      volumes:
        - /c/data/:/data/db

我尝试了上面的堆栈文件,但是收到了退出码14错误,请给我解决这个问题的方法。


working_dir 指的是容器内部的目录,而不是主机上的目录。您需要确保 /c/data/ 可以在容器运行的节点上创建(这是一个相当奇怪的路径...)。通常最好避免在使用堆栈时使用主机卷。 - Mihai
6个回答

11

如果存在旧版本MongoDB的数据,请删除/c/data/下的所有内容。


是的,它可以工作,但我每次都需要删除它吗?如果我从“/c/data/”中删除所有内容,那么它可以工作,因此我启动db并重新创建文件。当我重新启动db时,我会收到退出代码14错误。 - capo11
我想是这样的...只有在升级/降级的情况下...目前我还没有找到任何解决方法。 - Ivan Nedelcev
1
这对我有用,同时使用-d标志。 - Austin Brown
4
如果我同意删除数据,那我为什么要创建共享卷?(注:此句话已经是中文) - Dims

10
在你的终端执行以下命令:
docker system prune

没问题,Kew批准 =)

*请小心!它会清除所有东西!!


1
工作正常,它将清除混乱。 - Akshay Vijay Jain
1
这帮助我今天快速解决了磁盘已满的问题。但是我建议您小心操作,也许可以通过修剪容器而不触及卷来进行操作。 - Hugh Esco

2

这取决于您如何启动服务,例如使用:

docker-compose up -d(在Windows上)

而不是docker-compose up。 这样,您就可以通过终端控制调用docker-compose down,MongoDB进程可以正确终止。


这对我起作用了,但我还有一个旧数据文件需要删除的问题。 - Austin Brown
即使您在另一个终端窗口中启动了docker-compose而没有使用-d选项,您仍然可以发出docker-compose down命令。 - Dims

1

对我来说,有帮助的是删除已挂载的主机目录,然后使用docker volume rm {容器名称\ID} 删除该卷。 确保在compose中正确编写卷,例如:

  ...

  database:
    container_name: database
    image: mongo
    ports:
      - '27017:27017'
    volumes:
      - db:/data/db  
  ...  
  volumes: 
    db:  


1
在Mac电脑上,您可能可以通过删除/Users/{your account}/data文件夹来解决此问题。您应该能够通过前往Finder -> 前往文件夹 -> 并搜索~/Users/来找到该文件夹。之前我尝试但未成功的其他解决方法包括:停止和删除所有mongo容器、删除所有mongo镜像、从Docker Desktop中清理/清除数据以及卸载和重新安装Docker。

0
  1. 安装WSL2(需要最近的Windows更新)
  2. Docker -> 设置 -> 启用 -> 使用基于WSL 2的引擎

这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - user8866053

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接