我正在尝试在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/

10-12 00:43