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

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 1072982923

livingdocs/varnish Docker 镜像 - 轩辕镜像

varnish
livingdocs/varnish
支持配置热重载的Varnish设置,可直接用于Kubernetes和Docker环境,无需额外操作即可部署和运行,支持参数重载及常规Docker部署。
2 收藏0 次下载
🔒 更安全的专业镜像服务
中文简介版本下载
🔒 更安全的专业镜像服务

Varnish ![]([***]

一个支持配置热重载的Varnish设置,可直接用于Kubernetes和Docker化环境,无需复杂操作即可部署和运行。

核心功能和特性

  • 模板设置
  • 通过监视文件变化实现热重载
  • 使用SIGHUP信号进行配置重载
  • Prometheus导出器运行在端口9131
  • 自动DNS重载
  • 启动或配置更改时自动应用Varnish参数

与其他Kubernetes Varnish操作器的区别:

  • 非操作器,可作为单个部署部署
  • 支持常规Docker设置,无需Kubernetes即可运行
  • 支持参数重载

构建

sh
docker build -t livingdocs/varnish .

运行

无配置文件

为简单起见,支持最常见的参数。注意,配置文件中的参数始终覆盖这些CLI参数。

--config-source /etc/varnish/source:配置和模板目录 --config-output /etc/varnish:Varnish VCL文件的目标目录 --backend example.com:声明config.clusters[0].addresses: [example.com] -p default_ttl=60:声明config.parameters.default_ttl: 60或其他任何Varnish参数 --storage default,512m:Varnish存储配置 CONFIG_YAML或CONFIG_JSON环境变量:支持传递整个配置对象

sh
# 例如使用请求微缓存,TTL设为1
docker run --rm -it -p 8080:8080 --name varnish livingdocs/varnish --backend host.docker.internal:8081 -p default_ttl=1 -p default_grace=60
使用YAML配置文件
sh
echo '
listenAddress: 0.0.0.0:8080
watchFiles: true
watchDns: false
clusters:
- name: delivery
  address: host.docker.internal:8081
' > config.yaml

docker run --rm -it -v $PWD:/etc/varnish/source -p 8080:8080 --name varnish livingdocs/varnish
使用JSON配置文件
sh
echo '
{
  "listenAddress": "0.0.0.0:8080",
  "watchFiles": true,
  "watchDns": false,
  "clusters": [{"name": "delivery", "address": "host.docker.internal:8081"}]
}
' > config.json

docker run --rm -it -v $PWD:/etc/varnish/source -p 8080:8080 --name varnish livingdocs/varnish

配置选项

支持YAML和JSON配置文件。选择YAML的原因是它支持多行字符串,便于嵌入配置。

配置文件必须位于Varnish配置源目录中。默认目录为/etc/varnish/source,可通过--config-source CLI选项覆盖。请勿将此目录更改为/etc/varnish,否则文件监视器会陷入无限更新循环。

注意,在Kubernetes中,无法在挂载配置映射的目录中写入任何文件。

配置文件更改会被监视并触发Varnish内的重载。注意,如果文件所有者不是varnish,文件通知可能无法正常工作。

也可通过向主进程发送SIGHUP信号重载配置。

整个配置对象会传递给VCL模板,因此可添加自定义变量并传递给模板渲染器。

yaml
# /etc/varnish/source/config.yaml

# 静态配置
#
# 支持任何Varnish监听选项
listenAddress: 0.0.0.0:8080,HTTP
adminListenAddress: 0.0.0.0:2000
prometheusListenAddress: 0.0.0.0:9131
# 直接传递给进程的命令参数
# 例如,要添加次要监听地址,可传递选项
varnishRuntimeParameters: [-a, /path/to/listen.sock]
# Varnish存储配置
storage: default,512m
# 为管理端口定义自定义密钥
# 默认情况下会生成一个密钥并写入密钥文件
# 如果密钥文件已包含值,则优先使用该值
adminSecret: null
adminSecretFile: /etc/varnish/secret
# 启用HTTP访问日志输出到stdout
varnishAccessLogs: true
# 关闭期间,Varnish会在/_health上返回503错误
shutdownDelay: 5s

# 动态配置
#
# 可显式禁用触发配置重载的文件监视
# 向运行中的进程发送'kill -SIGHUP 1'也会重载配置
watchFiles: true
watchDns: true
# Varnish通过X-Served-By头响应请求
# 可在此自定义,{{hostname}}会自动替换
xServedBy: "{{hostname}}"
# 可声明多个VCL并在加载的顶级VCL配置中引用它们
vcl:
- name: default
  # 配置相对于配置文件的路径
  # 即/etc/varnish/source/default.vcl.ejs
  # 仅监视/etc/varnish/source中的文件变化,建议保持此路径
  src: default.vcl.ejs
  # 最终文件的目标路径默认为
  # '/etc/varnish'目录中不带ejs扩展名的模板名
  dest: default.vcl
  # 如有多个VCL,在主VCL上声明此标志,以便知道哪个设为活动状态
  top: true
- name: secondary
  src: secondary.vcl.ejs

# 可在cluster.probe配置中引用的探针
probes:
  # 仅name为必填项,其余为默认值
  # 在VCL中,探针名称为probe_delivery(Varnish需要唯一名称)
- name: probe_delivery
  url: /status
  interval: 5s
  timeout: 4s
  window: 3
  threshold: 2
  initial: null

acl:
  # 默认VCL配置中需要清除ACL
- name: acl_purge
  entries:
    - "# localhost"
    - localhost
    - 127.0.0.1
    - ::1
    - "# 私有网络"
    - 10.0.0.0/8
    - 172.16.0.0/12
    - 192.168.0.0/16

clusters:
  # 为集群命名,名称用于轮询调度器
  # 请勿使用'backend'或'default',这些是保留关键字
- name: delivery
  # 单个主机名
  # 自动创建指向A记录后所有IP地址的轮询调度器
  # 调度器名称为cluster.name,此处为'delivery'
  address: host.docker.internal:8081
  # 或多个主机名
  addresses: [host.docker.internal:8081]
  # 配置根级声明的探针
  probe: probe_delivery
  # 为集群中的每个后端定义后端参数
  # 未声明则使用Varnish默认值
  maxConnections: null
  firstByteTimeout: null
  betweenBytesTimeout: null
  connectTimeout: null

# 启用请求失败时的后台获取
# 默认启用(值为1)
fetchRetries: 1
# 在请求哈希并发送到后端前始终删除所有查询字符串
stripQueryString: false,
# 启动和文件更改时加载的任何Varnish参数
# 如未提供parameter对象,则使用以下默认值
parameters:
  feature: +http2,+esi_disable_xml_check
  default_grace: 86400
  default_keep: 3600
  default_ttl: 60
  backend_idle_timeout: 65
  timeout_idle: 60
  syslog_cli_traffic: off

# 无需完全自定义镜像内置的VCL
# 可使用这些钩子,它们会放置在特定位置
hooks:
  # 也可使用多行字符串
  import: |
    import accept;
  global: ""
  vclInit: ""
  vclRecvStart: ""
  vclRecvBackendHint: ""
  vclRecvEnd: ""
  vclHash: ""
  vclDeliverStart: ""
  vclDeliverEnd: ""
  vclSynthStart: ""
  vclSynthEnd: ""

模板

使用EJS模板生成Varnish VCL文件。所有配置应存储在/etc/varnish/source目录中,该目录会被监视并在更改时触发重载。

config.json或config.yaml文件以及VCL模板应位于/etc/varnish/source/目录中。构建时,VCL文件会写入/etc/varnish目录(例如/etc/varnish/varnish.vcl)。

yaml
vcl:
- name: varnish
  src: varnish.vcl.ejs

在VCL模板中,可完全访问config对象:

<%= config.something || '' %>
包含文件

支持以下特定包含文件:

探针:

<% for (const probe of config.probes) { %><%- include('probe', probe) %><% } -%>

后端:

<% for (const cluster of config.clusters) { %><%- include('backend', cluster) %><% } -%>

ACL:

<% for (const acl of config.acl) { %><%- include('acl', {"name": "purge", "entries:}) %><% } -%>

// 或

<%- include('acl', {"name": "purge", "entries": ["127.0.0.1"]}) %>

调度器:

<% for (const cluster of config.clusters) { %><%- include('director', cluster) -%><% } %>
查看更多 varnish 相关镜像 →
varnish logo
varnish
Varnish是一款专为内容密集型动态网站及API设计的HTTP加速器,它通过高效的缓存机制与请求处理优化,能够显著提升网站和API的响应速度,有效减轻后端服务器负载,为用户提供更流畅的访问体验,是构建高性能Web服务的重要工具。
18210M+ pulls
上次更新:未知
secoresearch/varnish logo
secoresearch/varnish
Varnish是高性能HTTP加速器Docker镜像,用于缓存Web内容,通过快速响应重复请求提升网站访问速度,有效减轻后端服务器负载,优化Web应用性能。
11M+ pulls
上次更新:未知
varnish/varnish-cache logo
varnish/varnish-cache
Varnish Cache的Helm Chart,用于在Kubernetes集群中部署和管理Varnish Cache。
50K+ pulls
上次更新:未知
wodby/varnish logo
wodby/varnish
通用的Varnish HTTP加速器容器镜像,用于加速HTTP请求处理
61M+ pulls
上次更新:未知
eeacms/varnish logo
eeacms/varnish
支持动态后端、Rancher DNS、自动配置及重载的Varnish Docker镜像,用于简化缓存服务的配置管理。
271M+ pulls
上次更新:未知
varnish/dist-vcp-almalinux-8 logo
varnish/dist-vcp-almalinux-8
暂无描述
10K+ pulls
上次更新:未知

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

登录仓库拉取

通过 Docker 登录认证访问私有仓库

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

Docker Compose

Docker Compose 项目配置

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

MacOS OrbStack

MacOS OrbStack 容器配置

宝塔面板

在宝塔面板一键配置镜像

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

极空间

极空间 NAS 系统配置服务

爱快路由

爱快 iKuai 路由系统配置

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

专属域名拉取

无需登录使用专属域名

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

镜像拉取常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。

轩辕镜像支持哪些镜像仓库?

专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。

流量耗尽错误提示

当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

用户好评

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

用户头像

oldzhang

运维工程师

Linux服务器

5

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

轩辕镜像
镜像详情
...
livingdocs/varnish
官方博客Docker 镜像使用技巧与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
咨询镜像拉取问题请 提交工单,官方技术交流群:1072982923
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
咨询镜像拉取问题请提交工单,官方技术交流群:
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
官方邮箱:点击复制邮箱
©2024-2026 源码跳动
官方邮箱:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.