efrecon/s3fs此Docker镜像(及相关GitHub项目)便于将远程S3存储桶资源挂载到容器中。挂载通过FUSEs3fs实现。该镜像本质上实现了一种低成本的Docker卷:使用适当的创建选项(见下文),您可以将远程存储桶绑定挂载回主机目录。此目录将使存储桶内容对进程以及主机上的所有其他容器可用。容器终止时,镜像会自动卸载远程存储桶。
镜像标签遵循s3fs实现的版本,没有latest标签,只有与[s3fs]发布版本匹配的标签。当重建时,会自动获取[s3fs]的新版本。[s3fs]从主仓库的标记git版本编译而来。镜像通过GitHub工作流自动构建,并推送到DockerHub和GHCR。每天检测一次新版本。
假设主机上存在/mnt/tmp目录,以下命令将挂载远程S3存储桶并将远程资源绑定挂载到主机的/mnt/tmp,使远程文件对同一主机上运行的进程和/或其他容器可访问。
Shelldocker run -it --rm \ --device /dev/fuse \ --cap-add SYS_ADMIN \ --security-opt "apparmor=unconfined" \ --env "AWS_S3_BUCKET=<存储桶名称>" \ --env "AWS_S3_ACCESS_KEY_ID=<访问密钥>" \ --env "AWS_S3_SECRET_ACCESS_KEY=<密钥>" \ --env UID=$(id -u) \ --env GID=$(id -g) \ -v /mnt/tmp:/opt/s3fs/bucket:rshared \ efrecon/s3fs
--device、--cap-add和--security-opt选项及其值用于确保容器能够使用FUSE提供S3存储桶。rshared确保绑定挂载使文件和目录对主机及其他容器递归可用。
注意,有报告称compose插件可能导致挂载传播问题(参见#42),使用独立的docker-compose似乎可以解决。
一系列以AWS_S3_开头的环境变量可用于配置容器:
AWS_S3_BUCKET:存储桶名称,必填。AWS_S3_AUTHFILE:符合s3fs格式的授权文件路径。若为空,则从其他授权相关环境变量获取数据。AWS_S3_ACCESS_KEY_ID:S3存储桶的访问密钥,仅在AWS_S3_AUTHFILE为空时使用。注意,AWS_S3_ACCESS_KEY_ID_FILE优先级更高。AWS_S3_ACCESS_KEY_ID_FILE:指向包含S3访问密钥的文件路径。存在时,从文件获取密钥,忽略AWS_S3_ACCESS_KEY_ID。便于通过Docker密钥传递密钥,仅在AWS_S3_AUTHFILE为空时使用。AWS_S3_SECRET_ACCESS_KEY:S3存储桶的密钥,仅在AWS_S3_AUTHFILE为空时使用。注意,AWS_S3_SECRET_ACCESS_KEY_FILE优先级更高。AWS_S3_SECRET_ACCESS_KEY_FILE:指向包含S3密钥的文件路径。存在时,从文件获取密钥,忽略AWS_S3_SECRET_ACCESS_KEY。便于通过Docker密钥传递密钥,仅在AWS_S3_AUTHFILE为空时使用。AWS_S3_URL:Amazon服务URL,可用于挂载实现兼容API的外部服务。AWS_S3_MOUNT:容器内挂载S3资源的位置,默认/opt/s3fs/bucket,不建议修改。AWS_S3_ENVFILE:容器内.env文件路径,从中读取环境变量。仅识别以AWS_S3_或S3FS_开头的行,内容由shell展开。通常应从主机以只读模式绑定挂载此文件。UID:容器内共享目录所有者的用户ID。GID:容器内共享目录所有者的组ID。S3FS_DEBUG:设为1可获取s3fs的调试信息。S3FS_ARGS:传递给s3fs的额外选项,逗号分隔,例如use_path_request_style,allow_other,default_acl=public-read。默认情况下,容器运行empty.sh命令,保持静默。若需检查活跃度,可传递ls.sh命令,定期列出挂载目录内容。这两个命令均确保容器终止时从挂载点卸载远程存储桶,因此为保证正常运行,应选择其中之一。若未卸载,挂载系统将包含未知条目,导致不稳定。
自动卸载通过命令中的trap和tini实现。本镜像直接提供tini,以支持在Swarm[swarm]或kubernetes环境中运行。
Docker镜像的标签自动匹配s3fs的官方版本。通过GitHub API发现以v开头的标签,并为每个标签构建单独镜像。镜像基于Alpine构建,会选择构建时最新的Alpine 3.x版本。s3fs 1.87版本因存在回归问题(已在发布后修复),无对应镜像。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务