本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
注意:这是官方varnish镜像的amd64架构构建的“按架构”仓库——更多信息请参见官方镜像文档中的“非amd64架构?”和官方镜像FAQ中的“Git中的镜像源已更改,该怎么办?”。
维护者:
Varnish Docker社区
获取帮助:
Docker社区Slack、Server Fault、Unix & Linux 或 Stack Overflow
Dockerfile链接fresh, 8.0.0, 8, 8.0, latest
fresh-alpine, 8.0.0-alpine, 8-alpine, 8.0-alpine, alpine
old, 7.7.3, 7.7
old-alpine, 7.7.3-alpine, 7.7-alpine
stable, 6.0.16, 6.0
问题提交地址:
[***]
支持的架构:(更多信息)
amd64、arm32v7、arm64v8、i386、ppc64le、s390x
已发布镜像 artifact 详情:
repo-info仓库的repos/varnish/目录(历史记录)
(镜像元数据、传输大小等)
镜像更新:
official-images仓库的library/varnish标签
official-images仓库的library/varnish文件(历史记录)
本描述的来源:
docs仓库的varnish/目录(历史记录)
Varnish是一款HTTP加速器,专为内容密集型动态网站和API设计。与其他Web加速器(如最初作为客户端缓存的***,或主要作为源服务器的Apache和nginx)不同,Varnish从设计之初就是一款HTTP加速器。Varnish专注于HTTP协议,不像其他代理服务器通常支持FTP、SMTP等网络协议。
***.org/wiki/Varnish_(software))
!logo
VARNISH_BACKEND_HOST和VARNISH_BACKEND_PORT只需指定后端服务器(Varnish将加速其内容)的地址:
# 定义VARNISH_BACKEND_HOST/VARNISH_BACKEND_PORT环境变量 # 工作目录需挂载为tmpfs以避免磁盘I/O # 使用8080端口与容器通信(容器内部监听80端口) $ docker run \ -e VARNISH_BACKEND_HOST=example.com -e VARNISH_BACKEND_PORT=80 \ --tmpfs /var/lib/varnish/varnishd:exec \ -p 8080:80 \ amd64/varnish
之后,可在浏览器中访问localhost:8080查看example.com的主页。
如果已有VCL配置文件,可直接将其挂载为/etc/varnish/default.vcl:
# 将配置文件挂载到容器内的/etc/varnish/default.vcl # 工作目录需挂载为tmpfs以避免磁盘I/O # 使用8080端口与容器通信(容器内部监听80端口) $ docker run \ -v /path/to/default.vcl:/etc/varnish/default.vcl:ro \ --tmpfs /var/lib/varnish/varnishd:exec \ -p 8080:80 \ amd64/varnish
或者,可通过简单的Dockerfile生成包含VCL文件的新镜像:
FROM amd64/varnish COPY default.vcl /etc/varnish/
将此文件与default.vcl放在同一目录,运行docker build -t my-varnish .构建镜像,然后启动容器:
$ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 my-varnish
所有镜像均包含varnishreload工具,可在不重启容器(从而不丢失缓存)的情况下更新运行中的配置。最基本用法如下:
# 更新容器内的default.vcl docker cp new_default.vcl running_container:/etc/varnish/default.vcl # 运行varnishreload docker exec running_container varnishreload
注意,varnishreload还支持重新加载其他文件(不一定是default.vcl)、标签(l)、旧标签的垃圾回收(-m)等功能。如需了解更多,运行:
docker run varnish varnishreload -h
默认情况下,容器使用100MB缓存大小,通常偏小,可通过VARNISH_SIZE环境变量调整:
$ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 -e VARNISH_SIZE=2G amd64/varnish
Varnish默认在80端口监听HTTP流量,可通过VARNISH_HTTP_PORT环境变量覆盖。类似地,VARNISH_PROXY_PORT变量(默认8443)指定PROXY协议的监听端口,该协议主要用于与hitch(巧合的是,hitch也默认使用8443端口)交互。
# 指示Varnish监听7777端口而非80端口 $ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:7777 -e VARNISH_HTTP_PORT=7777 amd64/varnish
默认Varnish配置文件路径为/etc/varnish/default.vcl,可通过VARNISH_VCL_FILE环境变量覆盖。这有助于创建可部署不同内置配置的单一镜像。
此外,可在docker run命令中amd64/varnish之后添加参数。若第一个参数以-开头,整个参数列表将附加到默认命令:
# 延长默认保持时间 $ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 -e VARNISH_SIZE=2G amd64/varnish -p default_keep=300
若amd64/varnish后的第一个参数不以-开头,则将覆盖默认命令:
# 显示命令行选项 $ docker run amd64/varnish varnishd -? # 列出可与-p一起使用的参数 $ docker run amd64/varnish varnishd -x parameter # 使用自定义参数运行服务器(不要忘记-F以避免后台运行) $ docker run amd64/varnish varnishd -F -a :8080 -b 127.0.0.1:8181 -t 600 -p feature=+http2
如前所述,可使用vmod_dynamic进行后端解析。镜像还包含varnish-modules集合。所有使用方法和语法文档可在该仓库的src/目录中找到。
此外,镜像包含install-vmod helper脚本,可在创建自定义镜像时快速下载、编译和安装vmods。注意,镜像设置了ENV变量VMOD_DEPS以简化操作。
FROM amd64/varnish:7.1 # 切换到root用户并安装构建依赖 USER root RUN set -e; \ apt-get update; \ apt-get -y install $VMOD_DEPS /pkgs/*.deb; \ \ # 安装一个或多个vmods install-vmod [***] \ \ # 清理并切换回varnish用户 apt-get -y purge --auto-remove $VMOD_DEPS varnish-dev; \ rm -rf /var/lib/apt/lists/* USER varnish
FROM amd64/varnish:7.1-alpine # 安装构建依赖 USER root RUN set -e; \ apk add --no-cache $VMOD_DEPS; \ \ # 安装一个或多个vmods install-vmod [***] \ \ # 清理 apk del --no-network $VMOD_DEPS USER varnish
amd64/varnish镜像有多种变体,适用于不同场景。
amd64/varnish:<version>这是默认镜像。若不确定需求,建议使用此变体。它既可用作临时容器(挂载源代码并启动容器运行应用),也可用作构建其他镜像的基础。
amd64/varnish:<version>-alpine此镜像基于流行的Alpine Linux项目,来自alpine官方镜像。Alpine Linux比大多数发行版基础镜像小得多(约5MB),因此通常生成更精简的镜像。
当最终镜像大小是首要考虑因素时,此变体非常有用。需要注意的是,它使用musl libc而非glibc及相关库,因此软件可能因libc需求/假设的深度而遇到问题。更多讨论参见this Hacker News comment thread。
为最小化镜像大小,Alpine-based镜像通常不包含额外相关工具(如git或bash)。若以此为基础镜像,可在自己的Dockerfile中添加所需工具(若不熟悉,参见alpine镜像描述中的安装示例)。
查看此镜像中包含软件的许可证信息。
与所有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