Docker运行错误:"Thin Pool具有的空闲数据块少于最小要求"

11
我们试图以之前可行的方式运行 Docker,但现在出现了“Thin Pool 空间不足”错误。
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' 命令和 这里的建议,但都没有成功。

有什么想法吗?

谢谢。

6个回答

9
在旧版本的Docker中,使用数据/元数据通过环回设备运行是默认设置。这种方式存在问题,新版本对此进行了更改。如果Docker是以这种方式配置的,则常规更新(例如通过rpm/apt)不会更改配置,因此需要进行完全重新安装才能解决问题。
以下是一篇文章,其中包含有关如何配置旧版本以不使用环回设备的说明: http://www.projectatomic.io/blog/2015/06/notes-on-fedora-centos-and-docker-storage-drivers/

3

您不需要重新安装Docker。相反,您可以清理/var/lib/docker目录下的所有容器、镜像、卷等。

这些镜像可以从您的Docker仓库中再次拉取。(假设您只在此Docker主机上构建Docker镜像。)


1
什么是“清理”?我到底要删除什么? - ealeon
定义“清理”。 - Abhijit Sarkar
docker rmi 废弃镜像名称 - Eternalcode

2
我的问题与环回设备问题无关,但产生了相同的错误条件。"docker images -a"显示许多name=none tag=none的镜像占用了空间。这些镜像不是"dangling",它们被当前活动的镜像引用,因此无法删除。
我的解决方案是运行"docker save"并将活动的镜像写入tar文件,然后删除活动镜像(这将删除所有子镜像),最后从tar文件运行"docker load -i"并创建一个新的单一镜像。没有更多与Thin Pool空间相关的错误。
重新安装docker会纠正此问题,仅仅是因为重新安装docker会清除所有镜像,但它会再次开始建立,并且我将来会重新遇到这个问题。

很有趣。你知道你是怎么陷入那种状态的吗? - aaaarrgh

2

2

TL;DR

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

说明:重新安装或清除所有镜像的原因是,Docker使用作为构建镜像的空间的“ramdisk”不会在镜像运行后清除。如果您正在运行几个不同的镜像,可能会填满scratch磁盘,并且“新”镜像没有足够的空间来运行。 docker system prune命令将无法工作,因为该空间被合法占用。您需要增加scratch文件的大小。

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

    df

  2. 找出数据文件的大小

    docker info |grep 'Data Space'

  3. 找到数据文件的位置

    docker info |grep 'loop file'

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

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

  5. 重新启动机器。指南中提到了一堆命令来“级联”调整大小,但重启会自动执行这些命令

    sudo reboot

参考资料:

{所有抱怨回环驱动程序过时的SO帖子} https://docs.docker.com/storage/storagedriver/device-mapper-driver/#use-operating-system-utilities


0

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