Varnish Docker 镜像是一个支持动态后端、Rancher DNS 集成、自动配置与重载的通用缓存服务镜像。该镜像基于轻量级 Alpine 系统构建,可广泛应用于各类 Web 服务的性能优化场景,不仅限于 EEA(欧洲环境署)相关项目。
基础信息:
dynamic.director 实现 Rancher 环境下的 DNS 动态解析/varnish-config 卷管理只读 VCL 模板文件:7 https://github.com/eea/eea.docker.varnish/blob/7.x/Dockerfile%EF%BC%88Alpine 3.19,Varnish 7.6.1)| 标签 | Varnish 版本 | 发布版本 | Dockerfile 链接 |
|---|---|---|---|
:4.1-6.5 | 4.1.11 | 6.5 | https://github.com/eea/eea.docker.varnish/tree/4.1-6.5/varnish/Dockerfile |
:7.2-1.0 | 7.2 | 1.0 | https://github.com/eea/eea.docker.varnish/tree/7.2-1.0/Dockerfile |
:7.4-1.1 | 7.4.2 | 1.1 | https://github.com/eea/eea.docker.varnish/tree/7.4-1.1/Dockerfile |
:7.5-1.0 | 7.5.0 | 1.0 | https://github.com/eea/eea.docker.varnish/tree/7.5-1.0/Dockerfile |
:7.6-1.0 | 7.6.1 | 1.0 | https://github.com/eea/eea.docker.varnish/tree/7.5-1.0/Dockerfile |
查看https://github.com/eea/eea.docker.varnish/releases
docker pull eeacms/varnish| 变量名 | 描述 | 默认值 | 示例值 |
|---|---|---|---|
VARNISH_HTTP_PORT | Varnish 监听的 HTTP 端口 | 80 | 8080 |
VARNISH_HTTPS_PORT | Varnish 监听的 HTTPS 端口 | 8443 | 8444 |
VARNISH_SIZE | 缓存大小(支持单位:M/G) | 1G | 512M |
AUTOKILL_CRON | 容器重建定时任务(UTC 时区,Linux crontab 格式),用于定期刷新配置 | 无 | 0 2 * * *(每日2点) |
VARNISH_CFG_CONTENT | 多行变量,内容将直接写入 /etc/varnish/default.vcl 文件 | 仅包含 VCL 版本 | 完整 VCL 配置内容 |
VARNISH_CFG_CONTENT 注入配置直接通过环境变量传递 VCL 配置内容,适用于简单配置场景。示例 docker-compose.yml:
yamlversion: '3' services: varnish: image: eeacms/varnish:7 ports: - "80:80" environment: - VARNISH_SIZE=2G - VARNISH_CFG_CONTENT='vcl 4.1; backend default { .host = "webserver"; .port = "80"; }' depends_on: - webserver webserver: image: nginx:alpine
启动:docker-compose up -d
默认 default.vcl 仅包含 VCL 版本声明。如需自定义基础配置,可通过 Dockerfile 扩展镜像:
dockerfileFROM eeacms/varnish:7 COPY varnish.vcl /etc/varnish/default.vcl
构建自定义镜像:docker build -t my-varnish /path/to/dockerfile-dir
步骤:
VARNISH_ 为前缀的环境变量(如 VARNISH_BACKEND_HOST)ENV VARNISH_BACKEND_HOST=webserver)<变量名> 占位:
vclbackend default { .host = "<VARNISH_BACKEND_HOST>"; .port = "<VARNISH_BACKEND_PORT>"; }
-e 覆盖默认值:docker run -e VARNISH_BACKEND_HOST=api-server eeacms/varnish通过 /varnish-config 只读卷挂载 VCL 模板文件,容器启动时会将该目录下的文件(保持目录结构)复制到 /etc/varnish 并进行变量替换:
bashdocker run -v /local/vcl-templates:/varnish-config:ro eeacms/varnish
使用 dynamic.director 实现 Rancher DNS 动态解析,自动发现后端容器 IP:
vclvcl 4.1; import dynamic; sub vcl_init { # 动态后端配置:端口、DNS TTL(秒) new cluster = dynamic.director(port = "<VARNISH_BACKEND_PORT>", ttl = <VARNISH_DNS_TTL>); # 添加后端服务域名(Rancher 服务名) cluster.add_backend("web-service"); } sub vcl_recv { set req.backend_hint = cluster.backend(); }
环境变量配置:-e VARNISH_BACKEND_PORT=80 -e VARNISH_DNS_TTL=60
docker run 示例bashdocker run -d \ --name varnish \ -p 80:80 \ -e VARNISH_SIZE=512M \ -e VARNISH_CFG_CONTENT='vcl 4.1; backend default { .host="nginx"; .port="80"; }' \ --link nginx:nginx \ eeacms/varnish:7
拉取最新镜像并重建容器:
bashdocker pull eeacms/varnish:7 docker stop varnish && docker rm varnish # 重新运行容器(使用原配置参数)
原始代码的初始所有者为欧洲环境署(EEA),保留所有权利。
原始代码为自由软件,可根据 GNU 通用公共许可证(GPL)第 2 版或更高版本的条款重新分发和/或修改。
由 欧洲环境署(EU) 资助开发。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务