在使用Docker容器的時候,若是須要使用mount命令,則必須使用特權模式啓動Dockerdocker
使用特權模式啓動docker的方式爲添加--privileged 例如 docker run -it --privileged -d 鏡像名bash
若是是API模式,則須要添加HostConfig參數中{"Privileged":true }服務器
在使用特權模式啓動docker後,進入到docker內部使用mount命令掛載某些ISO或者分區文件時可能出現oop
mount -o loop ./xxx.iso /mnt/cdrom mount: ./xxx.iso: failed to setup loop device: No such file or directory
固然,若是沒有使用特權模式的狀況下,使用mount命令會提示權限不足spa
mount -t ./xxx.iso /dev/cdrom /mnt/cdrom mount: permission denied
咱們假設咱們使用了特權模式,在掛載的狀況下遇到了failed to setup loop devicecode
那麼咱們須要關注如下兩點rem
一、確保安裝了循環設備內核模塊it
lsmod |grep loop
若是沒有任何輸出,則表明你須要安裝內核模塊io
modprobe loop
二、確認下/dev和/dev/shm分區的大小class
這兩個分區一般掛載tmpfs分區文件,在正常的物理服務器或者虛擬服務器中不會出現這類問題,而在docker中頗有可能出現
咱們須要使用
df -h
命令查看下這兩個分區的大小
若是分區過小也會出現failed to setup loop device的問題,做者就遇到了這個狀況。
調整方法
mount -o size=10240M -o remount /dev mount -o size=10240M -o remount /dev/shm
我將這兩個分區調整大小後。搞定