我试图在一个ubuntu码头容器中挂载一个iso9660,但是我得到了一个Unknown error -1。
docker run -i -t --rm ubuntu:16.04
apt-get update
apt-get install wget
wget http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/x86_64/alpine-virt-3.8.0-x86_64.iso
mkdir /mnt/alpine
mount -t iso9660 -o loop,offset=0 /alpine-virt-3.8.0-x86_64.iso /mnt/alpine/输出:
mount: /mnt/alpine/: mount failed: Unknown error -1alpine-virt-3.8.0-x86_64.iso仅用于测试目的。
发布于 2018-08-30 16:03:55
我猜这是一个权限问题,容器没有足够的权限来执行装入()操作。
检查以下内容:
http://man7.org/linux/man-pages/man7/capabilities.7.html
和
https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities
很可能您需要:CAP_SYS_ADMIN来使它工作,这是非常强大的。
根据您使用的操作系统/发行版,也可能是SELinux是活动的,并且是权限的阻止程序。
这取决于您的用例是什么,但是在一般的生产系统上,我建议采用另一种解决方案。将容器权限提升到SYS_ADMIN级别绝对不是一个安全的想法。例如,在容器外部安装,并映射已安装的文件夹。
发布于 2018-08-31 21:40:17
默认情况下,您不能在容器内运行挂载,这允许用户摆脱容器隔离(例如,挂载主机根文件系统)。如果您将应用程序信任为哈古特建议,您可以将容器配置为具有额外功能的运行,以允许挂载命令。
但是,将数据作为卷安装到容器中将是我的首选方法。您可以在docker之外下载该文件,然后挂载它:
wget http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/x86_64/alpine-virt-3.8.0-x86_64.iso
docker run -i -t --rm --mount type=volume,dst=/mnt/alpine,volume-driver=local,volume-opt=type=iso9660,\"volume-opt=o=loop,offset=0\",volume-opt=device=$(pwd)/alpine-virt-3.8.0-x86_64.iso ubuntu:16.04如果您希望能够使用可重用的名称挂载此卷,还可以创建一个具有类似选项的命名卷。
https://serverfault.com/questions/928694
复制相似问题