此Docker镜像(及相关GitHub项目)便于将远程S3存储桶资源挂载到容器中。挂载通过FUSEs3fs实现。该镜像本质上实现了一种低成本的Docker卷:使用适当的创建选项(见下文),您可以将远程存储桶绑定挂载回主机目录。此目录将使存储桶内容对进程以及主机上的所有其他容器可用。容器终止时,镜像会自动卸载远程存储桶。
镜像标签遵循s3fs实现的版本,没有latest标签,只有与[s3fs]发布版本匹配的标签。当重建时,会自动获取[s3fs]的新版本。[s3fs]从主仓库的标记git版本编译而来。镜像通过GitHub工作流自动构建,并推送到DockerHub和GHCR。每天检测一次新版本。
假设主机上存在/mnt/tmp目录,以下命令将挂载远程S3存储桶并将远程资源绑定挂载到主机的/mnt/tmp,使远程文件对同一主机上运行的进程和/或其他容器可访问。
docker 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 Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429