
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像基于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解析正常。以下是 gasparekatapy/seaweedfs 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



来自真实用户的反馈,见证轩辕镜像的优质服务