
Varnish Docker 社区
Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow
fresh, 8.0.0, 8, 8.0, latestfresh-alpine, 8.0.0-alpine, 8-alpine, 8.0-alpine, alpineold, 7.7.3, 7.7old-alpine, 7.7.3-alpine, 7.7-alpinestable, 6.0.16, 6.0(更多信息)
amd64、arm32v7、arm64v8、i386、ppc64le、s390x
repo-info 仓库的 repos/varnish/ 目录(历史记录)
(包含镜像元数据、传输大小等信息)
official-images 仓库的 library/varnish 标签
official-images 仓库的 library/varnish 文件(历史记录)
docs 仓库的 varnish/ 目录(历史记录)
Varnish 是一款 HTTP 加速器,专为内容密集型动态网站和 API 设计。与其他 Web 加速器(如最初作为客户端缓存的 Squid,或主要作为源服务器的 Apache、nginx)不同,Varnish 从设计之初就专注于 HTTP 加速,且仅支持 HTTP 协议,不像其他代理服务器常支持 FTP、SMTP 等多种网络协议。
来源:***.org/wiki/Varnish_(software))
VARNISH_BACKEND_HOST 和 VARNISH_BACKEND_PORT只需指定后端服务(即 Varnish 要加速的服务器)的地址和端口:
console# 定义后端服务的地址和端口 # 工作目录需挂载为 tmpfs 以避免磁盘 I/O # 容器内部监听 80 端口,外部映射到 8080 端口 $ docker run \ -e VARNISH_BACKEND_HOST=example.com -e VARNISH_BACKEND_PORT=80 \ --tmpfs /var/lib/varnish/varnishd:exec \ -p 8080:80 \ varnish
运行后,访问 localhost:8080 即可看到 example.com 的主页。
若已有 VCL 配置文件,可直接将其挂载为 /etc/varnish/default.vcl:
console# 将本地 VCL 文件挂载到容器内的 /etc/varnish/default.vcl(只读) # 工作目录挂载为 tmpfs,外部端口 8080 映射到容器 80 端口 $ docker run \ -v /path/to/default.vcl:/etc/varnish/default.vcl:ro \ --tmpfs /var/lib/varnish/varnishd:exec \ -p 8080:80 \ varnish
也可通过 Dockerfile 将 VCL 文件打包进新镜像:
dockerfileFROM varnish COPY default.vcl /etc/varnish/
将上述 Dockerfile 与 default.vcl 放在同一目录,执行 docker build -t my-varnish . 构建镜像,然后启动容器:
console$ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 my-varnish
所有镜像均内置 varnishreload 工具,支持在不重启容器(从而不丢失缓存)的情况下更新配置。基础用法如下:
console# 将新的 VCL 文件复制到运行中的容器 docker cp new_default.vcl running_container:/etc/varnish/default.vcl # 执行配置重载 docker exec running_container varnishreload
varnishreload 还支持重载其他文件、标签(-l)、清理旧标签(-m)等功能。查看完整用法:
consoledocker run varnish varnishreload -h
VARNISH_SIZE)默认缓存大小为 100MB(通常偏小),可通过 VARNISH_SIZE 环境变量调整:
console# 设置缓存大小为 2GB $ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 -e VARNISH_SIZE=2G varnish
VARNISH_HTTP_PORT/VARNISH_PROXY_PORT)VARNISH_HTTP_PORT:HTTP 流量监听端口,默认 80,可自定义。VARNISH_PROXY_PORT:PROXY 协议监听端口,默认 8443(与 hitch 镜像默认端口一致)。console# 让 Varnish 监听 7777 端口(而非默认 80) $ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:7777 -e VARNISH_HTTP_PORT=7777 varnish
VARNISH_VCL_FILE)默认 VCL 配置文件路径为 /etc/varnish/default.vcl,可通过 VARNISH_VCL_FILE 环境变量修改。适用于需要内置多种配置的场景。
在 docker run 命令中,varnish 后的参数若以 - 开头,会追加到默认启动命令后:
console# 延长默认缓存保留时间 $ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 -e VARNISH_SIZE=2G varnish -p default_keep=300
若参数不以 - 开头,则会覆盖默认启动命令:
console# 查看 varnishd 命令行选项 $ docker run varnish varnishd -? # 列出可通过 -p 设置的参数 $ docker run varnish varnishd -x parameter # 自定义参数启动(需添加 -F 确保非后台运行) $ docker run varnish varnishd -F -a :8080 -b 127.0.0.1:8181 -t 600 -p feature=+http2
7.1 及以上版本镜像已包含 vmod_dynamic(用于后端解析)和 varnish-modules 集合。此外,镜像提供 install-vmod 脚本,方便在构建自定义镜像时编译安装 vmod。
dockerfileFROM varnish:7.1 # 切换到 root 用户并安装构建依赖 USER root RUN set -e; \ apt-get update; \ apt-get -y install $VMOD_DEPS /pkgs/*.deb; \ \ # 安装一个或多个 vmod(示例为 varnish-modules) install-vmod [***]; \ \ # 清理依赖并切换回 varnish 用户 apt-get -y purge --auto-remove $VMOD_DEPS varnish-dev; \ rm -rf /var/lib/apt/lists/* USER varnish
dockerfileFROM varnish:7.1-alpine # 安装构建依赖 USER root RUN set -e; \ apk add --no-cache $VMOD_DEPS; \ \ # 安装一个或多个 vmod(示例为 varnish-modules) install-vmod [***]; \ \ # 清理依赖 apk del --no-network $VMOD_DEPS USER varnish
varnish:<version>默认镜像,适用于大多数场景。可直接作为临时容器运行(挂载配置文件启动),或作为基础镜像构建自定义镜像。
varnish:<version>-alpine基于 Alpine Linux(alpine ***镜像)构建,镜像体积极小(约 5MB 基础镜像),适合对镜像大小有严格要求的场景。
注意:Alpine 使用 musl libc 而非 glibc,部分依赖 glibc 的软件可能运行异常。此外,为精简体积,通常不包含 git、bash 等工具,需在自定义 Dockerfile 中手动安装(参考 Alpine 镜像文档)。
镜像中软件的许可证信息参见 varnish-cache 仓库。
与所有 Docker 镜像一样,本镜像可能包含基础系统(如 Bash)及依赖软件的其他许可证。自动检测到的额外许可证信息可在 repo-info 仓库的 varnish/ 目录 查看。
使用前请确保遵守所有包含软件的许可证要求。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429