
本镜像基于SeaweedFS构建,专为Swarm环境设计,提供节点自动检测功能,支持分布式主节点(master)和文件服务器(filer)部署。通过环境变量和命令参数配置,可实现IP自动发现、集群节点管理、日志清理及云存储双向同步等功能,适用于构建高可用的分布式存储集群。
节点检测与IP管理:通过-peers=SERVICE_NAME:PORT参数从服务名获取IP,无节点时使用-ip=SERVICE_NAME作为fallback;支持通过环境变量(如DETECT_MASTERS、DETECT_PEERS)自动扩展主节点/节点列表,绕过DNS解析。
集群高可用:支持全局文件服务器和主节点,启动时自动检测并移除不可达主节点,维持raft quorum(3.2.7+);通过USE_DISCOVER和hostname: "master_{{.Task.Slot}}"配置,使用容器主机名重建连接,解决IP变更导致的raft集群问题(3.1.0+)。
日志与存储管理:提供clean_log脚本(3.4.3+),结合Swarm定时任务清理日志,仅保留WEED_KEEP_DAYS天的日志;remotesync.sh工具(3.5.0+)支持云存储双向同步,需配合config.conf配置挂载目录。
网络优化:支持PUBLIC_URL作为IP检测fallback(2.7.4+),解决容器内访问公网IP的"host unreachable"问题;支持卷服务器publicUrl配置(2.3.0+),结合Swarm模板{{.Node.Hostname}}实现跨节点访问。
兼容性:与SeaweedFS卷插件(gasparekatapy/seaweedfs_plugin)兼容;2.0.0+版本基于自定义源码构建,修复小文件(<512 Bytes)WebDAV无MIME类型错误,不含supercronic。
| 环境变量 | 说明 | 默认值 | 适用版本 |
|---|---|---|---|
DETECT_MASTERS | 是否扩展-master或-mserver为内部IP列表 | false | 3.0.0+ |
DETECT_PEERS | 是否从-ip=SERVICE_NAME:PORT获取当前容器IP,绕过服务VIP | true | 2.4.1+ |
USE_DISCOVER | 结合容器主机名(如master_{{.Task.Slot}})重建-ip和-peers参数 | false | 3.1.0+ |
USE_HOSTNAME | 将-ip参数设为本地主机名,适用于文件服务器 | false | 3.1.2+ |
CLUSTER_SIZE | 集群节点数量,用于节点发现 | - | 3.1.0+ |
PUBLIC_URL | IP检测失败时的fallback,格式为主机名:端口 | - | 2.6.1+ |
WEED_KEEP_DAYS | clean_log脚本保留日志的天数 | 2 | 3.4.3+ |
WEED_SYNC_TYPE | remotesync.sh同步类型,remote(远程到本地)或local(本地到远程) | - | 3.5.0+ |
WEED_MASTER | 主节点地址,供clean_log和remotesync.sh使用 | - | 3.4.3+、3.5.0+ |
WEED_FILER | 文件服务器地址,供clean_log和remotesync.sh使用 | - | 3.4.3+、3.5.0+ |
yamlversion: '3.9' services: master: image: gasparekatapy/seaweedfs environment: DETECT_MASTERS: "false" DETECT_PEERS: "true" USE_DISCOVER: "true" USE_HOSTNAME: "false" CLUSTER_SIZE: 3 networks: - net hostname: "master_{{.Task.Slot}}" command: - 'master' - '-ip=master' - '-ip.bind=0.0.0.0' - '-port=9333' - '-port.grpc=19333' - '-peers=master:9333' - '-resumeState=true' - '-raftHashicorp=true' - '-raftBootstrap=false' deploy: mode: global placement: constraints: - node.role == manager update_config: parallelism: 1 failure_action: rollback order: stop-first filer: image: gasparekatapy/seaweedfs environment: DETECT_MASTERS: "true" DETECT_PEERS: "false" USE_DISCOVER: "true" USE_HOSTNAME: "true" CLUSTER_SIZE: 3 ports: - "8888:8888" - "18888:18888" networks: - net hostname: "filer_{{.Task.Slot}}" command: - 'filer' - '-ip=filer' - '-ip.bind=0.0.0.0' - '-port=8888' - '-port.grpc=18888' - '-port.readonly=28888' - '-master=master:9333' deploy: mode: replicated replicas: 3 placement: max_replicas_per_node: 1 update_config: parallelism: 1 failure_action: rollback order: stop-first volume: image: gasparekatapy/seaweedfs environment: DETECT_MASTERS: "true" DETECT_PEERS: "false" USE_DISCOVER: "true" USE_HOSTNAME: "true" CLUSTER_SIZE: 3 PUBLIC_URL: "{{.Node.Hostname}}:8080" ports: - target: 8080 published: 8080 protocol: tcp mode: host - target: 18080 published: 18080 protocol: tcp mode: host hostname: "volume_{{.Task.Slot}}" networks: - net command: - 'volume' - '-ip=volume' - '-ip.bind=0.0.0.0' - '-port=8080' - '-port.grpc=18080' - '-mserver=master:9333' deploy: mode: global update_config: parallelism: 1 failure_action: rollback order: stop-first clean_log: image: gasparekatapy/seaweedfs environment: WEED_MASTER: "master:9333" WEED_FILER: "filer:8888" WEED_KEEP_DAYS: 2 networks: - net entrypoint: ["/clean_log.sh"] deploy: mode: replicated replicas: 0 restart_policy: condition: none labels: # Swarm定时任务配置 - swarm.cronjob.enable=true - swarm.cronjob.schedule=0 0 */3 * * - swarm.cronjob.skip-running=true remote2local: image: gasparekatapy/seaweedfs environment: WEED_SYNC_TYPE: "remote" WEED_MASTER: "master:9333" WEED_FILER: "filer:8888" volumes: - /path/to/config.conf:/config.conf # 挂载同步配置文件 networks: - net entrypoint: ["/remotesync.sh", "/config.conf"] deploy: mode: replicated replicas: 0 restart_policy: condition: none labels: # Swarm定时任务配置 - swarm.cronjob.enable=true - swarm.cronjob.schedule=0 * * * * - swarm.cronjob.skip-running=true local2remote: image: gasparekatapy/seaweedfs environment: WEED_SYNC_TYPE: "local" WEED_MASTER: "master:9333" WEED_FILER: "filer:8888" volumes: - /path/to/config.conf:/config.conf # 挂载同步配置文件 networks: - net entrypoint: ["/remotesync.sh", "/config.conf"] deploy: mode: replicated replicas: 1 placement: max_replicas_per_node: 1 preferences: - spread: node.labels.datacenter networks: net:
-peers=master:9333指定节点,结合USE_DISCOVER和主机名模板实现节点自动发现。USE_HOSTNAME=true使用主机名作为IP,DETECT_MASTERS=true自动扩展主节点列表。PUBLIC_URL配置节点访问地址,支持跨节点访问。config.conf配置同步目录,支持本地与云存储双向同步。swarm.cronjob.*)实现定时任务。gasparekatapy/seaweedfs_plugin卷插件兼容,可提升存储性能。master、filer)需与Docker网络中的服务发现名称一致,确保IP解析正常。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务