我正在尝试在Docker容器内安装和使用FUSE。我的Dockerfile如下:
FROM golang:1.8
WORKDIR /go/src/app
COPY . .
RUN apt-get update && apt-get install -y fuse && rm -rf /var/lib/apt/lists/*
RUN go-wrapper download
RUN go-wrapper install
CMD ["go-wrapper", "run", "/mnt"]
当我运行安装FUSE的程序时,我得到:
/bin/fusermount: fuse device not found, try 'modprobe fuse' first
。如果我在安装步骤中安装
kmod
并运行modprobe fuse
,则会收到错误消息:modprobe: ERROR: ../libkmod/libkmod.c:557 kmod_search_moddep() could not open moddep file '/lib/modules/4.4.104-boot2docker/modules.dep.bin'
我怎样才能解决这个问题?
最佳答案
关于下面的Nickolay的答案,对于 fuse ,严格要求--privileged
标志。而且您最好避免给您的容器那么多的特权。
通过将其替换为--cap-add SYS_ADMIN
,您应该能够使工作正常,如下所示。
docker run -d --rm \
--device /dev/fuse \
--cap-add SYS_ADMIN \
<image_id/name>
有时这可能行不通。在这种情况下,您应该尝试调整 AppArmor配置文件或按以下方式禁用它:
docker run -d --rm \
--device /dev/fuse \
--cap-add SYS_ADMIN \
--security-opt apparmor:unconfined \
<image_id/name>
最后,如果全部失败,请使用--privileged标志。
关于docker - Docker内部的FUSE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48402218/