运行Docker容器时出错:设备上没有剩余空间:"/data/db/journal"

38

在 Mac 上运行 Docker Compose 的容器,这是文件。

api:
  build: .
  volumes:
    - .:/src
    - /src/node_modules
  links:
    - mongo
    - redis
  ports:
    - "3015:3015"
    - "5858:5858"
mongo:
  image: mongo:3.3
  ports:
   - "27017:27017"
redis:
  image: redis
  ports:
   - "6379:6379"

运行 docker-compose up 时,mongo 容器失败并退出。以下是日志文件:

MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=7115a6cce706
db version v3.3.14
git version: 507a5b4d334c1b4bea8fa232fa6b882849608e97
OpenSSL version: OpenSSL 1.0.1t  3 May 2016
allocator: tcmalloc
modules: none
build environment:
    distmod: debian81
    distarch: x86_64
    target_arch: x86_64
options: {}
 ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
See http://dochub.mongodb.org/core/prodnotes-filesystem
error creating journal dir /data/db/journal boost::filesystem::create_directory: No space left on device: "/data/db/journal"
exception in initAndListen std::exception: boost::filesystem::create_directory: No space left on device: "/data/db/journal", terminating
shutdown: going to close listening sockets...
removing socket file: /tmp/mongodb-27017.sock
shutdown: going to flush diaglog...
now exiting
shutting down with code:100

主要的抱怨是没有剩余空间创建目录,但我无法找出如何修复它。


尝试清理首先docker容器和镜像 -> https://dev59.com/b2Ei5IYBdhLWcg3wUa46 - mkorszun
我以前做过这个,但错误仍然存在。 - irokhes
4个回答

96

我用下面的命令清理旧卷,解决了问题:

$ docker volume rm $(docker volume ls -qf dangling=true)

参考: docker-cleanup-volumes

更新:2018年7月13日

Docker现在有一个内置命令用于删除悬空卷:docker volume prune


运行 docker volume prune 并释放一些空间对我很有帮助!谢谢。 - Vzzarr

15

我通过调整docker的磁盘大小解决了错误:

在此输入图片描述


2

这个 MongoDB 镜像的 Dockerfile 显示出 /data/db 路径使用了 Docker 卷:

VOLUME /data/db /data/configdb

如果您运行:

docker inspect --format '{{ .Mounts }}' <your-container>

这将告诉您在Mac上数据量被映射到哪里。如果它映射到空间不足的驱动器上,您可以启动容器并将其指向另一个有空间的位置:

docker run -d -v <local-path-with-free-space>:/data/db mongo:3.3

或者将以下内容添加到您的Compose文件中:
volumes:
  - <local-path-with-free-space>:/data/db

1
我在Windows上遇到了这个问题,无论如何修剪、删除或清理都没有帮助。
我不得不使用鲸鱼 > 设置 > 重置 > "恢复出厂设置..."选项,最终解决了问题。

很遗憾,我不知道最初是什么导致了这个问题。我很担心这可能是Docker本身的一个漏洞/泄漏。 - Wyck

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