Docker делит тома s3fs с помощью fuse: не может быть размонтирован или перемонтирован, если не используется --privileged
Я использую образ докера с именем "rancher-active-proxy". Это прокси, который автоматически создает / обновляет HTTPS-сертификаты.
Но так как его хранилище не распределено, а контейнер не использует удаленное хранилище, мы не можем его масштабировать (за балансировщиком нагрузки или чем-то еще).
Поэтому я пробую несколько вещей.
Что я тестирую:
- proxy_container, создает свои файлы там, где хочет
- s3fs_container, используется для монтирования корзины s3 и хранения файлов из proxy_container
У меня будет один прокси с правами записи на долгое время
docker-compose.yml для тестов
version: '2'
services:
rancher-active-proxy:
image: adi90x/rancher-active-proxy
environment:
CRON: 0 2 * * *
DEBUG: 'true'
DEFAULT_EMAIL: me@gmail.com
DEFAULT_PORT: '80'
stdin_open: true
volumes:
- /tmp/test/htpasswd:/etc/nginx/htpasswd:z
- /tmp/test/vhost.d:/etc/nginx/vhost.d:z
- /tmp/test/letsencrypt:/etc/letsencrypt:z
- /tmp/test/certs:/etc/nginx/certs:z
tty: true
volumes_from:
- s3fs:z
ports:
- 443:443/tcp
- 80:80/tcp
s3fs:
image: s3fs:master
cap_add:
- SYS_ADMIN
- MKNOD
devices:
- /dev/fuse
security_opt:
- apparmor:unconfined
- seccomp:unconfined
environment:
AWS_ACCESS_KEY: ${AWS_ACCESS_KEY}
AWS_ACCESS_SECRET_KEY: ${AWS_ACCESS_SECRET_KEY}
AWS_BUCKET: ${BUCKET_NAME}
volumes:
- /tmp/test/htpasswd:/opt/s3fs/bucket:shared
- /sys/fs/cgroup:/sys/fs/cgroup:ro
Два контейнера правильно делятся файлами и файлы загружаются на S3
s3fs dockerfile
FROM ubuntu:16.04
ENV S3FS_VERSION=v1.82 STORE=bucket
RUN apt-get update && \
apt-get install -y \
tree \
automake \
autotools-dev \
fuse \
g++ \
git \
libcurl4-gnutls-dev \
libfuse-dev \
libssl-dev \
libxml2-dev \
make \
pkg-config \
wget
WORKDIR /opt/s3fs
RUN mkdir s3fs-fuse && \
ARCHIVE=${S3FS_VERSION}.tar.gz && \
wget https://github.com/s3fs-fuse/s3fs-fuse/archive/$ARCHIVE && \
tar xvzf $ARCHIVE -C s3fs-fuse --strip 1 && \
cd s3fs-fuse && \
./autogen.sh && \
./configure && \
make && \
make install && \
cd - && rm -rf s3fs-fuse $ARCHIVE
RUN mkdir $STORE
ADD libs libs
ADD start.sh .
ENTRYPOINT [ "./start.sh" ]
точка входа start.sh
#!/bin/bash
echo $AWS_ACCESS_KEY:$AWS_ACCESS_SECRET_KEY > credentials
chmod 600 credentials
s3fs $AWS_BUCKET $STORE \
-o dbglevel=info \
-o passwd_file=credentials -d -d -f \
-o curldbg \
-o url="https://s3-eu-west-1.amazonaws.com" \
-o endpoint="eu-west-1" \
-o nonempty \
-o allow_other \
-o allow_root
Моя проблема
Когда я перезапускаю контейнеры, я получаю
ERROR: for s3fs Cannot start service s3fs: linux mounts: lstat /home/potiron/test12: transport endpoint is not connected
ERROR: Encountered errors while bringing up the project.
Если я попытаюсь размонтировать
fusermount: entry for /home/potiron/test1 not found in /etc/mtab
С помощью --privileged
не решает это.
Может быть, я неправильно использую флаг "z".. У вас есть идеи?
Спасибо за вашу помощь:).