docker 挂载 ISO / 分区时报 failed to setup loop device: No such file or directory

虚拟化系统 0 2150 张长瑞 收藏

在使用 Docker 容器的时候,如果需要使用 mount 命令,则必须使用特权模式启动 Docker

使用特权模式启动 docker 的方式为添加 --privileged  例如 docker run -it --privileged -d 镜像名

如果是 API 模式,则需要添加 HostConfig 参数中 {"Privileged":true }

在使用特权模式启动 docker 后,进入到 docker 内部使用 mount 命令挂载某些 ISO 或者分区文件时可能出现

mount -o loop ./xxx.iso /mnt/cdrommount: ./xxx.iso: failed to setup loop device: No such file or directory

当然,如果没有使用特权模式的情况下,使用 mount 命令会提示权限不足

mount -t ./xxx.iso /dev/cdrom /mnt/cdrommount: permission denied

我们假设我们使用了特权模式,在挂载的情况下遇到了 failed to setup loop device

那么我们需要关注以下两点

1、确保安装了循环设备内核模块

lsmod |grep loop

如果没有任何输出,则代表你需要安装内核模块

modprobe loop

2、确认下 /dev 和 /dev/shm 分区的大小

这两个分区通常挂载 tmpfs 分区文件,在正常的物理服务器或者虚拟服务器中不会出现这类问题,而在 docker 中很有可能出现

我们需要使用

df -h

命令查看下这两个分区的大小

如果分区太小也会出现 failed to setup loop device 的问题,作者就遇到了这个情况。

调整方法

mount -o size=10240M -o remount /devmount -o size=10240M -o remount /dev/shm

我将这两个分区调整大小后。搞定


相关推荐:

网友留言:

您需要 登录账户 后才能发表评论

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码