在使用Docker容器的时候,如果需要使用mount命令,则必须使用特权模式启动Docker
使用特权模式启动docker的方式为添加–privileged 例如 docker run -it –privileged -d 镜像名
如果是API模式,则需要添加HostConfig参数中{“Privileged”:true }
在使用特权模式启动docker后,进入到docker内部使用mount命令挂载某些ISO或者分区文件时可能出现
mount -o loop ./xxx.iso /mnt/cdrom
mount: ./xxx.iso: failed to setup loop device: No such file or directory
当然,如果没有使用特权模式的情况下,使用mount命令会提示权限不足
mount -t ./xxx.iso /dev/cdrom /mnt/cdrom
mount: 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 /dev
mount -o size=10240M -o remount /dev/shm
我将这两个分区调整大小后。搞定
{{o.name}}
{{m.name}}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/91636.html