【问题标题】:docker start: no space left on devicedocker start:设备上没有剩余空间
【发布时间】:2021-10-25 19:09:38
【问题描述】:

我发现我的一个容器倒了。这是我第二次遇到这个问题。当我尝试使用 docker start 启动它时,我得到:

来自守护程序的错误响应:无效的标头字段值“oci 运行时 错误:container_linux.go:247:启动容器进程导致 \"process_linux.go:359: 容器初始化导致 \\"rootfs_linux.go:89: rootfs 中的监禁过程导致 \\\\" 无法创建 pivot_root 目录,错误 mkdir /var/lib/docker/devicemapper/mnt/da2101d43e6c8200eb22a4415b0aedf8033c7c701a19392217b8947738a723bf/rootfs/.pivot_root592021975: 设备上没有剩余空间\\\\"\\"\"\n" 错误:启动失败 容器:mydockername

知道为什么我在设备上没有剩余空间吗?主机体积仅占6%。

我使用的是 CentOS Docker 版本 1.12.3,构建 6b644ec

【问题讨论】:

  • 您好,可以粘贴df -h的结果吗?另外,你能用另一张图片测试一下吗?
  • 主机操作系统是什么?您用来启动/运行映像的命令是什么?
  • 您好,我使用 centos-release-7-2.1511.el7.centos.2.10.x86_64(在托管服务提供商中虚拟化)。对不起,卡洛斯,我不能做 df -h。我需要恢复服务,所以我删除了损坏的服务器并创建了它。
  • Rao,我使用简单的 docker run... 没有任何特殊的 frag... 我只使用 -d --name -m --link 标志(我将它链接到其他 docker 中的数据库)。
  • 你最后找到解决办法了吗?

标签: docker centos


【解决方案1】:

容器的磁盘空间是有限的,而不是主机空间。容器磁盘空间默认限制为 10G。如果 docker storage 是 devicemapper,可以挂载容器文件系统并删除一些日志。然后就可以启动容器了。

~# docker start centos3_50_pay

来自守护进程的错误响应:无效的标头字段值“oci 运行时错误:container_linux.go:247:启动容器进程导致”process_linux.go:359:容器初始化导致“rootfs_linux.go:89:rootfs 中的监禁进程导致”无法创建 pivot_root 目录,错误 mkdir /var/lib/docker/devicemapper/mnt/96fd436942ce6c9a618ccea9c52f5e9b766065db9e7edf870967b27fbaf3f9bf/rootfs/.pivot_root558329180: no space left on device"

错误:无法启动容器:centos3_50_pay

~# docker inspect centos3_50_pay | grep Device  
        "Devices": [],
            "DeviceId": "467",
            "DeviceName": "docker-253:0-3222880762-96fd436942ce6c9a618ccea9c52f5e9b766065db9e7edf870967b27fbaf3f9bf",
            "DeviceSize": "10737418240"

~# cat /var/lib/docker/devicemapper/metadata/ \
       96fd436942ce6c9a618ccea9c52f5e9b766065db9e7edf870967b27fbaf3f9bf
{"device_id":467,"size":10737418240,"transaction_id":736,\
 "initialized":false,"deleted":false}

~# echo "10737418240/512" |bc
 20971520
~# dmsetup ls
 docker-thinpool (253:5)                           

~# dmsetup create tmp --table "0 20971520 thin /dev/mapper/ \
    docker-thinpool 467"
~# mount /dev/mapper/tmp /root/tmp
~# cd /root/tmp/rootfs/
~# ll
~# umount /root/tmp
~# dmsetup remove tmp
~# docker start centos3_50_pay
 centos3_50_pay

【讨论】:

    【解决方案2】:

    在 MAC OSX 上,这将帮助您,删除旧的、过时的东西:

    docker rm $(docker ps -q -f status=exited)
    docker rmi $(docker images -q -f dangling=true)
    docker volume rm $(docker volume ls -qf dangling=true)
    

    【讨论】:

    • 这三个命令的查询部分使用单引号、双引号和不加引号有什么原因吗?
    • 不需要引号,小费是 10 倍。固定。
    猜你喜欢
    • 2021-06-10
    • 1970-01-01
    • 2015-08-16
    • 2015-08-30
    • 2019-02-20
    • 2021-09-18
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多