【问题标题】:Docker overlay2 resource is busyDocker overlay2 资源正忙
【发布时间】:2020-05-20 08:04:05
【问题描述】:

我需要一些关于 docker 的帮助! :D

当我必须部署我的应用程序时,有时会出现此错误

Cannot create container for service db: error creating overlay mount to /var/lib/docker/overlay2/<HASH>-init/merged: no such file or directory

container <HASH>: driver "overlay2" failed to remove root filesystem: unlinkat /var/lib/docker/overlay2/<HASH>/merged: device or resource busy

这是我的docker info 输出:

Client:
 Debug Mode: false

Server:
 Containers: 17
  Running: 17
  Paused: 0
  Stopped: 0
 Images: 223
 Server Version: 19.03.5
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: b34a5c8af56e510852c35414db4c1f4fa6172339
 runc version: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
 init version: fec3683
 Kernel Version: 3.10.0-1062.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 31.09GiB
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Live Restore Enabled: false

每次出现resource is busy错误时,我将/var/lib/docker/(containers OR overlay2)中的HASH目录移动到HASH_old目录并重试部署应用程序,以前可以工作,但现在no such file or directory错误总是出现,即使在移动所有之后文件夹到_old

【问题讨论】:

    标签: linux docker docker-compose centos centos7


    【解决方案1】:

    关闭有问题的容器并运行docker system prune -af,这将删除未使用的容器和图像。之后尝试构建和部署,应该可以工作

    【讨论】:

    • 如果它确实有效,你可能会支持他,但对我来说它没有用
    • docker system prune -af,这将删除未使用的容器和图像。 --> 如果您还没有运行任何将删除所有图像的 docker!那应该用粗体字符写;)
    【解决方案2】:

    由于 JVictorV 的答案对我不起作用,因此我在这里发布了针对此一般错误的解决方案,很多问题都与它有关,但解决方案不多,或者它们不起作用

    在我的情况下,令人惊讶的解决方法是限制“运行”docker 构建命令/层的数量,因为如果数量超过 60 个层/命令,它总是以缺少“合并”文件夹错误而告终,不不管命令的内容是什么,即使是像RUN ls -la 这样的简单命令也会出现该错误,如果此类/任何命令的总数高于大约 60 个,那就奇怪了。 Merged 子文件夹总是丢失,尽管即使我自动生成了所有合并的子文件夹,也总是动态创建一个带有新哈希的新层,而该子文件夹丢失了。

    【讨论】:

      【解决方案3】:

      清理overlay2文件夹时出现此错误,最终可以像这样解决问题:

      umount /var/lib/docker/overlay2-legacy/*/merged
      rm -R /var/lib/docker/overlay2-legacy/*
      

      注意:这可能会导致数据丢失。

      【讨论】:

        猜你喜欢
        • 2017-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-05
        相关资源
        最近更新 更多