在使用 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
我将这两个分区调整大小后。搞定
网友留言: