本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

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 加速器(如最初作为客户端缓存的 ***,或主要作为源服务器的 Apache、nginx)不同,Varnish 从设计之初就专注于 HTTP 加速,且仅支持 HTTP 协议,不像其他代理服务器常支持 FTP、SMTP 等多种网络协议。
来源:***.org/wiki/Varnish_(software))
VARNISH_BACKEND_HOST 和 VARNISH_BACKEND_PORT只需指定后端服务(即 Varnish 要加速的服务器)的地址和端口:
# 定义后端服务的地址和端口 # 工作目录需挂载为 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:
# 将本地 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 文件打包进新镜像:
FROM varnish COPY default.vcl /etc/varnish/
将上述 Dockerfile 与 default.vcl 放在同一目录,执行 docker build -t my-varnish . 构建镜像,然后启动容器:
$ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 my-varnish
所有镜像均内置 varnishreload 工具,支持在不重启容器(从而不丢失缓存)的情况下更新配置。基础用法如下:
# 将新的 VCL 文件复制到运行中的容器 docker cp new_default.vcl running_container:/etc/varnish/default.vcl # 执行配置重载 docker exec running_container varnishreload
varnishreload 还支持重载其他文件、标签(-l)、清理旧标签(-m)等功能。查看完整用法:
docker run varnish varnishreload -h
VARNISH_SIZE)默认缓存大小为 100MB(通常偏小),可通过 VARNISH_SIZE 环境变量调整:
# 设置缓存大小为 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 镜像默认端口一致)。# 让 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 后的参数若以 - 开头,会追加到默认启动命令后:
# 延长默认缓存保留时间 $ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 -e VARNISH_SIZE=2G varnish -p default_keep=300
若参数不以 - 开头,则会覆盖默认启动命令:
# 查看 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。
FROM 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
FROM 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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429