Я пытаюсь использовать gcsfuse для монтирования корзин GCS в контейнере докеров, развернутом в гибком настраиваемом экземпляре среды выполнения GAE. Это часть Dockerfile:
FROM gcr.io/google-appengine/python
RUN apt-get -y update
RUN apt-get -y install lsb-release
RUN echo "deb http://packages.cloud.google.com/apt gcsfuse-$(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gcsfuse.list
RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
RUN apt-get -y update
RUN apt-get -y install fuse gcsfuse
Затем из контейнера докеров я получаю сообщение об ошибке при запуске:
# gcsfuse --key-file=gcs_credentials.json bucket_name /tmp/mount_path
Using mount point: /tmp/mount_path
Opening GCS connection...
Opening bucket...
Mounting file system...
daemonize.Run: readFromProcess: sub-process: mountWithArgs: mountWithConn: Mount: mount: running fusermount: exit status 1
stderr:
fusermount: fuse device not found, try 'modprobe fuse' first
Затем, как подсказывает сообщение об ошибке, я запускаю:
# modprobe fuse
bash: modprobe: command not found
В некоторых других вопросах я видел, что мне следует запустить контейнер докеров в привилегированном режиме, но я не могу найти, как это сделать с контейнером, запущенным в экземпляре GAE. Есть ли другой путь?
Проблема заключается в контексте безопасности и привилегиях:
В Куберенте:
securityContext:
capabilities:
add:
- SYS_ADMIN
privileged: true
В Docker вы можете попробовать этот вопрос