专属
文档
插件
助手
邀请
顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像
专业版
轩辕镜像 官方专业版
轩辕镜像
专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单页面收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题轩辕镜像免费版
其他
关于我们网站地图
热门搜索:
ghcr.io/openfaas/classic-watchdog

ghcr.io/openfaas/classic-watchdog:0.3.4

ghcr.iolinux/amd640.3.4大小: 未知更新于 2026年6月6日
让 AI 帮你使用轩辕镜像? · 展开查看说明

如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。

Watchdog

Watchdog 提供外部世界与函数之间的接口。它为每个请求启动一个新进程,并使用 STDIO 进行通信。

上文所述:一个小型 Web 服务器或垫片,为每个传入的 HTTP 请求 fork 所需进程

上文所述:一个小型 Web 服务器或垫片,为每个传入的 HTTP 请求 fork 所需进程

每个函数都需要嵌入此二进制文件,并将其用作 ENTRYPOINT 或 CMD,实际上它是容器的 init 进程。一旦进程被 fork,Watchdog 会通过 stdin 传入 HTTP 请求,并通过 stdout 读取 HTTP 响应。这意味着您的进程无需了解任何 Web 或 HTTP 相关知识。

ENTRYPOINT、CMD、stdin、stdout

下一代:of-watchdog

您是否希望对 HTTP 响应、“热函数”、持久连接池或内存中缓存机器学习模型有更多控制?那么请查看新 of-watchdog 的 http 模式。

轻松创建新函数

通过 CLI 创建函数

创建函数最简单的方法是使用模板和 FaaS CLI。CLI 可让您无需了解 Docker 知识,只需用一种支持的编程语言编写处理程序文件即可。

  • 使用 OpenFaaS 创建您的第一个无服务器 Python 函数 使用 OpenFaaS 创建您的第一个无服务器 Python 函数

  • 阅读 FaaS CLI 教程 阅读 FaaS CLI 教程

深入了解

打包函数

回显函数的 Dockerfile 示例:

FROM ghcr.io/openfaas/classic-watchdog:0.3.4 AS watchdog

FROM alpine:3.22.1

RUN mkdir -p /home/app

COPY --from=watchdog /fwatchdog /usr/bin/fwatchdog
RUN chmod +x /usr/bin/fwatchdog

# 添加非 root 用户
RUN addgroup -S app && adduser app -S -G app
RUN chown app /home/app

WORKDIR /home/app

USER app

# 在此处填充示例 - 例如 "cat"、"sha512sum" 或 "node index.js"
ENV fprocess="cat"
# 设置为 true 可在函数日志中查看请求
ENV write_debug="false"

EXPOSE 8080

CMD ["fwatchdog"]

环境变量覆盖:

Watchdog 可通过环境变量进行配置。您必须始终指定 fprocess 变量。

选项用法说明
fprocess每次函数调用时要调用的进程(函数进程)。必须是 UNIX 二进制文件,通过 STDIN 接收输入并通过 STDOUT 输出
cgi_headers请求中的 HTTP 头通过环境变量提供 - 如 Http_X_Served_By 等。详见:处理头信息部分。默认启用
marshal_request不将原始 HTTP 正文重定向到 fprocess,而是先将其编组为 JSON。如果需要处理 HTTP 头且不想通过 cgi_headers 标志使用环境变量,请使用此选项
content_type为所有响应强制指定特定的 Content-Type 响应
write_timeout从函数写入响应正文的 HTTP 超时时间(秒)
read_timeout从客户端调用者读取有效负载的 HTTP 超时时间(秒)
healthcheck_interval容器编排器(如 kubelet)进行 HTTP 健康检查的间隔(秒)。用于优雅关闭
suppress_lockWatchdog 将尝试向 /tmp/ 写入锁文件以进行 swarm 健康检查 - 设置为 true 可禁用此行为
exec_timeout为每个传入请求执行的进程的硬超时(秒)。如果设置为 t...

fprocess、cgi_headers、Http_X_Served_By、marshal_request、cgi_headers、content_type、write_timeout、read_timeout、healthcheck_interval、suppress_lock、exec_timeout、write_debug、combine_output、stderr、max_inflight、jwt_auth、true、http://gateway.openfaas:8080、jwt_auth_debug、jwt_auth_local、true、http://127.0.0.1:8080

请求/响应的 Content-Type

默认情况下,watchdog 会将函数的响应与客户端的“Content-Type”匹配。

  • 如果客户端发送 Content-Type 为 application/json 的 JSON 请求,响应中将自动匹配该类型。
  • 如果客户端发送 Content-Type 为 text/plain 的 JSON 请求,响应中也将自动匹配该类型。

要覆盖所有响应的 Content-Type,请设置 content_type 环境变量。


项目仓库 README(补充)

Watchdog

Watchdog 提供了外部世界与函数之间的接口。它为每个请求启动一个新进程,并使用 STDIO 进行通信。

上文所述:一个小型 Web 服务器或垫片,为每个传入的 HTTP 请求 fork 所需进程

每个函数都需要嵌入此二进制文件,并将其用作 ENTRYPOINT 或 CMD,实际上它是容器的 init 进程。一旦进程被 fork,watchdog 会通过 stdin 传递 HTTP 请求,并通过 stdout 读取 HTTP 响应。这意味着您的进程无需了解任何 Web 或 HTTP 相关知识。

下一代:of-watchdog

您是否希望更好地控制 HTTP 响应、“热函数”、持久连接池或在内存中缓存机器学习模型?那么请查看新 https://github.com/openfaas-incubator/of-watchdog 的 http 模式。

轻松创建新函数

通过 CLI 创建函数

创建函数最简单的方法是使用模板和 FaaS CLI。CLI 可以让您无需了解 Docker 知识,只需用一种支持的编程语言编写处理程序文件即可。

  • 使用 OpenFaaS 创建您的第一个无服务器 Python 函数
  • https://github.com/openfaas/faas-cli

深入了解

打包函数

echo 函数的 Dockerfile 示例:

FROM ghcr.io/openfaas/classic-watchdog:0.3.4 AS watchdog

FROM alpine:3.22.1

RUN mkdir -p /home/app

COPY --from=watchdog /fwatchdog /usr/bin/fwatchdog
RUN chmod +x /usr/bin/fwatchdog

# Add non root user
RUN addgroup -S app && adduser app -S -G app
RUN chown app /home/app

WORKDIR /home/app

USER app

# Populate example here - i.e. "cat", "sha512sum" or "node index.js"
ENV fprocess="cat"
# Set to true to see request in function logs
ENV write_debug="false"

EXPOSE 8080

CMD ["fwatchdog"]

环境变量覆盖:

Watchdog 可通过环境变量进行配置。您必须始终指定 fprocess 变量。

选项用途
fprocess每次函数调用时要调用的进程(函数进程)。必须是 UNIX 二进制文件,并通过 STDIN 接受输入,通过 STDOUT 输出
cgi_headers请求中的 HTTP 头通过环境变量提供,例如 Http_X_Served_By 等。详见:处理头信息 部分。默认启用
marshal_request不将原始 HTTP 正文重定向到 fprocess,而是先将其序列化为 JSON。如果需要处理 HTTP 头且不想通过 cgi_headers 标志使用环境变量,请使用此选项
content_type为所有响应强制设置特定的 Content-Type
write_timeout函数写入响应正文的 HTTP 超时时间(秒)
read_timeout从客户端调用者读取有效负载的 HTTP 超时时间(秒)
healthcheck_interval容器编排器(如 kubelet)进行 HTTP 健康检查的间隔(秒)。用于优雅关闭
suppress_lockWatchdog 会尝试向 /tmp/ 写入锁定文件以进行 swarm 健康检查 - 设置为 true 可禁用此行为
exec_timeout为每个传入请求执行的进程的硬超时时间(秒)。设为 0 则禁用
write_debug将所有输出、错误消息和附加信息写入日志。默认值为 false
combine_output默认值为 true - 在函数响应中合并 stdout/stderr;设为 false 时,stderr 写入容器日志,stdout 用于函数响应
max_inflight限制最大并发请求数
jwt_auth仅适用于 OpenFaaS for Enterprises 客户。设为 true 时,watchdog 要求在 Authorization 头中传递 JWT token 作为 Bearer token。此 token 只能通过 OpenFaaS 网关使用 http://gateway.openfaas:8080 地址作为授权机构进行令牌交换获取
jwt_auth_debug打印 JWT 身份验证过程的调试消息(仅适用于 OpenFaaS for Enterprises)
jwt_auth_local设为 true 时,watchdog 将尝试使用端口转发或运行在 http://127.0.0.1:8080 的本地网关验证 JWT token,而非通过集群内服务名称访问(仅适用于 OpenFaaS for Enterprises)

指标

名称描述类型
http_requests_total请求总数Counter
http_request_duration_seconds请求持续时间Histogram
http_requests_in_flight并发请求数Gauge

高级/调优

(新增)of-watchdog 与 HTTP 模式

  • of-watchdog

每个请求 fork 一个新进程具有进程隔离、可移植性和简单性等优势。任何进程都可以无需额外代码即可转换为函数。of-watchdog 及其“HTTP”模式是一种优化,可在所有请求之间维持单个进程。

新版本的 watchdog 正在 https://github.com/openfaas-incubator/of-watchdog 进行测试。

此次重写主要是为了持续维护的结构调整。它将成为现有 watchdog 的即插即用替代品,并提供二进制版本。

优雅关闭

Watchdog 能够与健康检查配合以实现优雅关闭。

当 watchdog 进程中检测到 SIGTERM 信号时,Go 协程将删除 /tmp/.lock 文件,并将 HTTP 健康检查标记为不健康,返回 HTTP 503。然后代码将等待 write_timeout 中指定的持续时间。在此期间,容器编排器的健康检查必须运行并完成。

现在编排器会将此副本标记为不健康,并将其从有效 HTTP 端点池中移除。

现在我们将停止接受新连接,并等待 write_timeout 中定义的值,然后最终允许进程退出。

使用 HTTP 头

头信息和其他请求信息会以以下格式注入到环境变量中:

X-Forwarded-By 头会以 Http_X_Forwarded_By 的形式可用

  • Http_Method - GET/POST 等
  • Http_Query - 查询字符串值
  • Http_ContentLength 和 Http_Content_Length - 提供看门狗接收到的传入 HTTP 请求的总内容长度,见下方说明
  • Http_Transfer_Encoding - 仅在提供时设置,若设置为 chunked,则 Content-Length 将为 -1,表示不适用

此行为由 cgi_headers 环境变量启用,该变量默认启用(true)。

以下是一个带有附加头和查询字符串的 POST 请求示例。

$ cgi_headers=true fprocess=env ./watchdog &
2017/06/23 17:02:58 Writing lock-file to: /tmp/.lock

$ curl "localhost:8080?q=serverless&page=1" -X POST -H X-Forwarded-By:http://my.vpn.com

如果在 Linux 系统上将 fprocess 设置为 env,你会看到以下内容:

Http_User_Agent=curl/7.43.0
Http_Accept=*/*
Http_X_Forwarded_By=http://my.vpn.com
Http_Method=POST
Http_Query=q=serverless&page=1

你也可以使用 GET 方法:

$ curl "localhost:8080?action=quote&qty=1&productId=105"

看门狗的输出将是:

Http_User_Agent=curl/7.43.0
Http_Accept=*/*
Http_Method=GET
Http_Query=action=quote&qty=1&productId=105

现在你可以在应用程序中使用 HTTP 状态来做出决策。

HTTP 方法

看门狗支持的 HTTP 方法如下:

带请求体:

  • POST, PUT, DELETE, UPDATE

不带请求体:

  • GET

API Gateway 当前支持函数的 POST 路由。

请求/响应的 Content-Type

默认情况下,看门狗会将函数的响应与客户端的 "Content-Type" 匹配。

  • 如果客户端发送 Content-Type 为 application/json 的 JSON 请求,响应中会自动匹配此类型。
  • 如果客户端发送 Content-Type 为 text/plain 的 JSON 请求,响应中也会自动匹配此类型

要覆盖所有响应的 Content-Type,请设置 content_type 环境变量。

轩辕镜像配置手册

按平台快速找到配置文档

Docker

登录仓库拉取

登录认证 · 私有仓库

专属域名拉取

免登录 · 高速拉取

Linux

Docker 镜像配置

Windows / Mac

Docker Desktop 配置

MacOS OrbStack

OrbStack 容器

Docker Compose

Compose 项目配置

NAS

群晖

Synology 配置

飞牛

fnOS 镜像配置

绿联

绿联 NAS

威联通

QNAP 配置

极空间

极空间 NAS

企业仓库

其他仓库

ghcr · Quay · nvcr

Harbor 镜像源

Proxy Repository 对接

Portainer 镜像源

Registries 配置

Nexus 镜像源

Docker Proxy 缓存

开发工具

Dev Containers

VS Code 开发容器

Podman

Podman 配置指南

Singularity / Apptainer

HPC 科学计算容器

Kubernetes

K8s Containerd

Kubernetes · Containerd

K3s

轻量级集群

面板 / 网络

爱快路由

iKuai 镜像加速

宝塔面板

一键配置镜像源

AI

用 AI 使用轩辕镜像

agents.md · AI 对话 · 提示词

需要其他帮助?请查看我们的 常见问题 Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

功能

免费版与专业版区别

功能对比 · 版本选择

支持的镜像仓库

Docker Hub · GCR · GHCR

新手拉取配置

登录 · 专属域名 · 配置

docker search 限制

专属域名 · Hub 搜索

不支持 push

仅支持 pull · 不支持

拉取速度原因

带宽 · 缓存 · 冷热镜像

排错

402 与流量用尽

402 · 流量包 · 充值

401 认证失败

401 · docker login

manifest unknown

标签错误 · 镜像不存在

410 Gone 排查

410 · Docker 升级

429 限流

免费版 · 请求频率

DNS 超时

DNS 解析 · 网络超时

账号

失败是否计费

manifest · blob · 计费

申请开发票(企业 / 个人)

企业 · 个人 · 工单

修改登录密码

网站 · 仓库 · 重置

注销账户

工单 · 数据 · 注销

原理

mirrors 不生效

daemon.json · 重启

去掉域名前缀

docker tag · 重命名

指定架构拉取

ARM64 · AMD64 · 多架构

latest 与「最新」

digest · 版本号 · 标签

查看全部问题→

用户好评

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

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
ghcr.io/openfaas/classic-watchdog
博客Docker 镜像公告与技术博客
热门查看热门 Docker 镜像推荐
教程轩辕镜像功能与使用教程
安装一键安装 Docker 并配置镜像源
官方公众号:源码跳动|官方技术交流群:13763429
官方公众号:源码跳动|官方技术交流群:|问题咨询请:提交工单
商务合作:点击复制邮箱
©2024-2026 源码跳动
商务合作:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.