docker push error creating overlay mount to device or resource busy 错误

1.问题背景

docker push镜像到镜像仓库报错: docker push error creating overlay mount to xxxx: device or resource busy


image.png

2.问题可能原因

未释放资源占用、磁盘空间不足、Docker版本兼容性、机器 OverlayFS 的配置和内核版本兼容性等

3.问题排查 & fix方案

在使用 Docker 推送镜像时,如果你遇到“error creating overlay mount to device or resource busy”错误,通常是因为文件系统在某种状态下无法进行挂载。以下是一些可能的解决方案:

1.检查 Docker 日志
查看 Docker 的日志文件,可能会提供更多的错误信息。可以使用以下命令查看日志:

      journalctl -u docker

2.确认系统资源
检查系统的磁盘和内存资源,确保它们没有耗尽。你可以使用 df -hT 和 free -m 命令来检查可用的磁盘和内存。

      df -hT
      lsblk
      free -m

3.释放被占用的资源
查看是否有其他进程在使用相关目录,可以使用 lsof 或 fuser 找到对应的占用目录的进程,然后kill掉进程,释放占用资源

     # 找到对应的占用目录的进程,然后kill掉进程,释放占用资源
      lsof /data/var/lib/docker/overlay2/xxx/mount 

如果某些容器正在运行并使用 overlay 文件系统,考虑停止或重启那些容器。使用以下命令可以查看正在运行的容器:

      docker ps

4.检查挂载点
查看当前挂载的文件系统,确保没有挂载冲突。你可以使用以下命令检查:

   mount | grep overlay

5.清理未使用的资源
Docker 有时会留下未被使用的镜像、容器或网络,这可能会导致问题。可以使用以下命令清理这些资源:

   docker system prune -a

6.重启 Docker 服务
有时候重启 Docker 服务可以解决资源被占用的问题。你可以使用以下命令重启 Docker:

   systemctl restart docker
   systemctl status docker
   journalctl -u docker

7.重启主机
有时候简单的重启你的主机可以解决资源占用的问题。如果其他方法都无效,可以尝试重启机器。

8.更新 Docker
确保你的 Docker 版本是最新的,某些问题在最新版本中可能已经被修复。你可以通过以下命令更新 Docker:

      sudo apt-get update
      sudo apt-get install docker-ce docker-ce-cli containerd.io

如果以上方法都不能解决问题,你可能需要考虑深入检查 OverlayFS 的配置、内核版本、Docker 配置等高级设置。另外,也可以查阅 Docker 的官方文档或相关社区以获得更多帮助。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。