如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Shepherd是一个Docker Swarm服务,旨在当服务的基础镜像更新时自动更新您的Swarm服务。它通过定时检查镜像版本,触发Docker Swarm的原生更新机制,减少手动操作,确保服务始终使用最新的基础镜像,适用于需要自动维护服务更新的Swarm集群环境。
SLEEP_TIME调整间隔FILTER_SERVICES指定更新服务,或IGNORELIST_SERVICES忽略特定服务ROLLBACK_ON_FAILURE可在更新失败时回滚到上一版本UPDATE_OPTIONS和ROLLBACK_OPTIONS控制服务更新和回滚的额外参数IMAGE_AUTOCLEAN_LIMIT可自动清理旧镜像RUN_ONCE_AND_EXIT单次检查后退出,适合与cron调度工具配合使用docker service update操作的运维场景使用docker service create部署
shelldocker service create --name shepherd \ --constraint "node.role==manager" \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock,ro \ containrrr/shepherd
使用Docker Compose部署
yamlversion: "3" services: shepherd: image: containrrr/shepherd volumes: - /var/run/docker.sock:/var/run/docker.sock deploy: placement: constraints: - node.role == manager
更多示例配置可参考项目中的docker-compose.yml和examples文件夹。
Shepherd通过环境变量进行配置,主要参数如下:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
SLEEP_TIME | 镜像更新检查间隔时间(格式如"5m"表示5分钟) | "5m" |
IGNORELIST_SERVICES | 不需要更新的服务名称列表(空格分隔) | 无 |
FILTER_SERVICES | 需要更新的服务过滤条件(符合docker service ls的过滤格式) | 无 |
ROLLBACK_ON_FAILURE | 更新失败时是否回滚到上一版本(设置为"true"启用) | 无 |
UPDATE_OPTIONS | docker service update命令的额外参数(如"--update-delay=30s") | 无 |
ROLLBACK_OPTIONS | docker service update --rollback命令的额外参数 | 无 |
TIMEOUT | 服务更新操作超时时间(默认5分钟) | "5m" |
WITH_REGISTRY_AUTH | 是否启用私有仓库认证(设置为"true"启用) | 无 |
REGISTRY_USER | 私有仓库用户名 | 无 |
REGISTRY_PASSWORD | 私有仓库密码(或使用名为shepherd_registry_password的docker secret) | 无 |
REGISTRY_HOST | 私有仓库主机名(非Docker Hub时需设置) | 无 |
REGISTRIES_FILE | 多仓库认证信息的secret文件路径 | 无 |
WITH_INSECURE_REGISTRY | 允许连接不安全的私有仓库(设置为"true"启用) | 无 |
WITH_NO_RESOLVE_IMAGE | 禁止从仓库拉取镜像(设置为"true"启用) | 无 |
APPRISE_SIDECAR_URL | apprise微服务URL,用于发送服务更新通知 | 无 |
IMAGE_AUTOCLEAN_LIMIT | 服务更新时自动清理旧镜像,值为保留的旧镜像数量 | 无 |
RUN_ONCE_AND_EXIT | 单次检查后退出(设置为"true"启用) | 无 |
TZ | 日志时区(如"Europe/Berlin") | 无 |
带环境变量的完整部署示例
shelldocker service create --name shepherd \ --constraint "node.role==manager" \ --env SLEEP_TIME="5m" \ --env IGNORELIST_SERVICES="shepherd my-other-service" \ --env WITH_REGISTRY_AUTH="true" \ --env WITH_INSECURE_REGISTRY="true" \ --env WITH_NO_RESOLVE_IMAGE="true" \ --env FILTER_SERVICES="label=com.mydomain.autodeploy" \ --env APPRISE_SIDECAR_URL="apprise-microservice:5000" \ --env IMAGE_AUTOCLEAN_LIMIT="5" \ --env RUN_ONCE_AND_EXIT="true" \ --env ROLLBACK_ON_FAILURE="true" \ --env UPDATE_OPTIONS="--update-delay=30s" \ --env TZ=Europe/Berlin \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock,ro \ --mount type=bind,source=/root/.docker/config.json,target=/root/.docker/config.json,ro \ containrrr/shepherd
注意:上述命令中的引号由shell解析,不属于环境变量值的一部分。
多私有仓库认证配置
创建认证信息文件(制表符分隔,包含id、registry、login、password):
blog registry.gitlab.com gitlab+deploy-token-5123674 ssw2Nrd2
创建Docker secret:
shelldocker secret create shepherd-registries-auth private/shepherd-registries-auth
在Docker Compose中配置Shepherd:
yamlservices: shepherd: image: containrrr/shepherd environment: REGISTRIES_FILE: /var/run/secrets/shepherd-registries-auth secrets: - shepherd-registries-auth deploy: placement: constraints: - node.role == manager secrets: shepherd-registries-auth: external: true
在目标服务上添加标签指定认证id:
yamldeploy: labels: - shepherd.enable=true - shepherd.auth.config=blog
使用默认SLEEP_TIME时运行时间会漂移,如需固定调度,建议与https://github.com/crazy-max/swarm-cronjob%E9%85%8D%E5%90%88%EF%BC%9A
RUN_ONCE_AND_EXIT=truereplicas=0restart_policy: condition: none示例配置可参考docker-compose.swarm-cronjob.yml。
Shepherd通过更新服务的镜像规范(移除当前摘要)触发更新。Docker会自动处理:
大部分更新逻辑依赖Docker原生功能,Shepherd主要负责定时触发检查和更新操作。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





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