我无法在我的基于Ubuntu的Docker镜像中使用--cap-add SYS_ADMIN --device /dev/fuse
运行gcsfuse
,这在其他帖子中可以看到。不过,对于--privileged
和根用户或非根用户,它就像一个护身符。但我希望避免这种选择。
我的Dockerfile:
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install -y gnupg lsb-release wget
RUN lsb_release -c -s > /tmp/lsb_release
RUN GCSFUSE_REPO=$(cat /tmp/lsb_release); echo "deb http://packages.cloud.google.com/apt gcsfuse-$GCSFUSE_REPO main" | tee /etc/apt/sources.list.d/gcsfuse.list
RUN wget -O - https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
RUN apt-get update
RUN apt-get install -y gcsfuse
我的测试:
docker run -it --rm \
--device /dev/fuse \
--cap-add SYS_ADMIN \
-v /path/in/host/to/key.json:/path/to/key.json \
-e GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json my_image:0.1 /bin/bash
在运行的容器中:
mkdir /root/gruik
gcsfuse bucket_name /root/gruik/
结果是:
Using mount point: /root/gruik
Opening GCS connection...
Mounting file system...
daemonize.Run: readFromProcess: sub-process: mountWithArgs: mountWithConn: Mount: mount: permission denied
我是不是遗漏了什么?谢谢
发布于 2021-01-18 19:09:42
这实际上是docker本身的问题,您需要在--privileged
模式下运行docker容器才能实现此功能。检查此related docker issue
https://stackoverflow.com/questions/65715624
复制相似问题