Docker共享使用fuse的s3fs卷:如果不使用–privileged,则不能卸载或重新安装

我使用名为“rancher-active-proxy”的docker镜像。 它是自动创build/更新HTTPS证书的代理。

但是由于它的存储空间不是分布式的,而且容器也没有使用任何types的远程存储,所以我们无法对其进行扩展(在负载均衡器之后)。

所以我正在尝试一些事情。

我正在testing的是:

  • proxy_container,在他想要的地方创build它的文件
  • s3fs_container,用于装载s3存储区并存储来自proxy_container的文件

我将有一个长期的写访问代理

docker-compose.yml进行testing

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 

两个容器正确共享文件,file upload到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”标志..你有什么想法吗?

谢谢你的帮助 :)。