码头工人运行错误:"Thin Pool has free data blocks which is less than minimum required"



我们试图以过去的方式运行docker,但现在我们遇到了"精简池空间不足"错误:

docker run --privileged -d --net=host --name=fat-redis -v /fat/deploy:/fat/deploy -v /fat/fat-redis/var/log:/var/log -v /home:/home fat-local.indy.xiolab.myserv.com/fat-redis:latest /fat/deploy/docker/fat-redis/fat_start_docker_inner.sh
docker: Error response from daemon: devmapper: Thin Pool has 486 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior.
See 'docker run --help'.

这个错误是什么意思?我们尝试了"docker rmi"和这里的建议,但都无济于事。

有什么想法吗?

谢谢

在旧版本的docker上,通过环回设备使用数据/元数据运行是默认的。此操作存在问题,较新版本已更改此默认设置。如果docker是这样配置的,那么正常的更新(例如通过rpm/apt)不会改变配置,这就是为什么需要完全重新安装才能修复的原因。

以下是一篇文章,介绍如何将旧版本配置为不使用环回设备:http://www.projectatomic.io/blog/2015/06/notes-on-fedora-centos-and-docker-storage-drivers/

您不必重新安装Docker。相反,您可以清理/var/lib/docker directory下的所有容器、图像、卷等。

这些图像可以再次从Docker存储库中提取。(这是假设你只使用这个Docker主机来构建Docker镜像。)

我的问题与环回设备问题无关,但产生了相同的错误条件。"docker images-a"显示了许多名称=无标签=无图像占用空间。这些图像并不是"悬空"的;它们被当前活动映像引用,无法删除。

我的解决方案是运行"docker save"并将活动映像写入tar文件,删除活动映像(删除了所有子映像),然后从tar文件运行"docker-load-i"并创建一个新映像。没有更多与精简池空间有关的错误。

重新安装docker会纠正它,因为重新安装docker确实会清除所有图像,但它会再次开始构建,然后我会在未来再次遇到这个问题。

使用以下方法清除不必要的图像。

docker image prune -a --force --filter "until=240h"

有关更多详细信息,请参阅本文档:https://docs.docker.com/engine/reference/commandline/image_prune/

TL;博士

有时你只需要更多的空间。使用truncate命令增加数据文件。

解释:重新安装或清除所有图像之所以有效,是因为您有一个";ramdisk";docker用作构建映像的空间,但在映像运行后不会清除它。如果你正在运行几个不同的映像,你可以填满暂存盘;更新的";图像没有足够的空间运行。docker system prune命令将不起作用,因为该空间已被合法占用。您需要增加暂存文件的大小。

  1. 确保磁盘上有额外的物理空间

    df

  2. 计算出数据文件的大小

    docker info|grep"数据空间">

  3. 查找数据文件的位置

    docker信息|grep"循环文件">

  4. 增加数据文件的大小(+50G或其他)

    sudo truncate-s 150G/var/lib/docker/devicemapper/devicemaper/data

  5. 重新启动机器指南谈到了一系列命令;级联";通过层调整大小,但重新启动会自动调整大小

    sudo重新启动

参考文献:

{所有抱怨环回驱动程序过时的SO帖子}https://docs.docker.com/storage/storagedriver/device-mapper-driver/#use-操作系统实用程序

事实证明,重新安装docker成功了。使用以下链接:https://docs.docker.com/engine/installation/linux/centos/

干杯

相关内容

最新更新