【问题标题】:Docker instance cannot run images anymore and unable to reclaim free spaceDocker 实例无法再运行映像并且无法回收可用空间
【发布时间】:2025-12-10 13:40:01
【问题描述】:

我正在尝试在 docker 中启动我保存的任何容器,但无法启动。我已经开始收到来自守护进程的错误响应:

错误运行 DeviceCreate (createSnapDevice) dm_task_run failed

这在提交一个相对较大的 docker 映像后开始发生,它似乎已经填满了所有可用的 docker 数据空间,即使我在主机上有很多空间。现在,即使删除了大图像,我也无法再释放 docker 数据空间。 Docker 无法回收空间。我还尝试了下面提到的修复,以便我可以启动 docker 容器但没有成功。我可以做些什么来修复现有的 Docker 以再次运行图像?

相关问题:Can't run Docker container due device mapper error


这是我的主机配置。 Data Space used and total 已达到最大值,可用空间为 0。

# docker info
=========================================================
Containers: 49
Images: 23
Storage Driver: devicemapper
 Pool Name: docker-8:3-4998488-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 107.4 GB
 Data Space Total: 107.4 GB
 Data Space Available: 0 B
 Metadata Space Used: 60.36 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.087 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.93-RHEL7 (2015-01-28)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-229.el7.x86_64
Operating System: Red Hat Enterprise Linux
CPUs: 4
Total Memory: 7.64 GiB

docker version
=========================================================

Client:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0a8c2e3
 Built:        Thu Sep 10 19:08:45 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0a8c2e3
 Built:        Thu Sep 10 19:08:45 UTC 2015
 OS/Arch:      linux/amd64

【问题讨论】:

  • 我的docker info 一点也不像你的,你的docker version 是什么?我的docker info | grep Version Server Version: 1.9.0-rc2
  • 无论如何,尝试删除一些图像(这样你就可以获得一些磁盘空间),然后看看你是否可以启动一些容器
  • 已经删除了大图像,但使用的数据空间似乎没有缩小或改变。 “最大数据空间”是用户可配置的设置吗?我在 docker 主机上有大量空间。 docker 的“数据空间”如何利用或限制主机上的可用空间?

标签: linux docker rhel


【解决方案1】:

运行

docker system df

会告诉你磁盘使用情况和可回收空间。

释放空间并保留您的图像:

删除卷:

docker volume rm $(docker volume ls --format {{.ID}})

移除停止的容器:

docker rm $(docker ps -aq)

只清理所有东西 可选删除所有图像/容器/卷/网络

docker system prune -af

【讨论】:

    【解决方案2】:

    在 RHEL docker 主机上,我可以回收空间并启动 docker 映像的唯一方法是实际删除 devicemapper/data。似乎没有其他 docker 命令可以删除容器/图像/卷。我将我想要的图像备份到一个 tar 球并进行了删除以使其再次工作。

    【讨论】:

      最近更新 更多