puzzle/keepalived是一个用于运行Keepalived的Docker镜像。Keepalived是一款基于VRRP(虚拟路由冗余协议)的高可用解决方案,主要用于实现服务器的故障转移和虚拟IP(VIP)管理。该镜像支持通过环境变量快速配置,也可自定义配置文件,适用于构建高可用集群环境,确保服务持续可用。
获取预构建镜像的首选源为quay.io,https://hub.docker.com/r/puzzle/keepalived/%E6%BA%90%E5%B7%B2%E5%BC%83%E7%94%A8%E3%80%82
keepalived.conf配置文件该镜像要求主机已加载ip_vs内核模块(可通过modprobe ip_vs加载),且需使用--cap-add=NET_ADMIN和--net=host参数运行:
bashdocker run --cap-add=NET_ADMIN --net=host -d puzzle/keepalived:latest
使用自定义Keepalived配置
镜像内置默认配置文件,可通过环境变量自定义,也可使用以下两种方式加载自定义配置:
运行时挂载配置文件至/container/service/keepalived/assets/keepalived.conf:
bashdocker run --volume /data/my-keepalived.conf:/container/service/keepalived/assets/keepalived.conf --detach puzzle/keepalived:latest
通过扩展或克隆镜像添加配置文件(详见高级用户指南)
解决Docker挂载文件问题
在部分系统中,挂载文件可能出现权限或所有权问题。启动脚本会尝试调整文件权限,可能导致错误。可通过--copy-service参数解决:
bashdocker run [你的选项] puzzle/keepalived:latest --copy-service
调试
容器默认日志级别为info,支持的级别包括:none、error、warning、info、debug、trace。
示例:以debug模式运行容器
bashdocker run --detach puzzle/keepalived:latest --loglevel debug
查看所有命令行选项:
bashdocker run puzzle/keepalived:latest --help
环境变量默认值定义在image/environment/default.yaml,可通过以下方式自定义(详见设置环境变量)。
| 环境变量 | 描述 | 默认值 |
|---|---|---|
| KEEPALIVED_INTERFACE | Keepalived网络接口 | eth0 |
| KEEPALIVED_PASSWORD | Keepalived认证密码 | sG9lWB37Bgc59cv7 |
| KEEPALIVED_PRIORITY | 节点优先级 | 150 |
| KEEPALIVED_ROUTER_ID | 虚拟路由器ID | 51 |
| KEEPALIVED_UNICAST_PEERS | 单播对等节点列表 | ["192.168.1.10", "192.168.1.11"] |
| KEEPALIVED_VIRTUAL_IPS | 虚拟IP列表 | ["192.168.1.231", "192.168.1.232"] |
| KEEPALIVED_NOTIFY | 状态变化时执行的脚本 | /container/service/keepalived/assets/notify.sh |
| KEEPALIVED_COMMAND_LINE_ARGUMENTS | Keepalived命令行参数 | --log-detail --dump-conf |
设置环境变量
命令行参数方式
通过--env参数设置:
bashdocker run --env KEEPALIVED_INTERFACE="eno1" --env KEEPALIVED_PASSWORD="password!" \ --env KEEPALIVED_PRIORITY="100" --detach puzzle/keepalived:latest
链接环境文件
将环境文件挂载至/container/environment/XX-somedir(XX需小于99,确保优先于默认环境文件处理):
bashdocker run --volume /data/environment/my-env.yaml:/container/environment/01-custom/env.yaml \ --detach puzzle/keepalived:latest
扩展镜像
若有私有仓库,推荐通过扩展镜像设置环境变量(详见扩展镜像)。
特殊环境变量设置
对于列表类型的环境变量(如KEEPALIVED_UNICAST_PEERS),需添加#PYTHON2BASH:标签并将YAML格式转换为Python列表格式:
bashdocker run --env KEEPALIVED_UNICAST_PEERS="#PYTHON2BASH:['192.168.1.10', '192.168.1.11']" --detach puzzle/keepalived:latest
可通过在线工具将YAML转换为Python格式。
Docker镜像版本控制
镜像标签分为三类:
latest:主分支最新提交构建,不建议生产环境使用<keepalived_version>-rc.*:Keepalived新版本测试构建,仅用于测试/预发环境,标签可能被覆盖<keepalived_version>:经过测试的稳定版,推荐生产环境使用,标签不会被覆盖扩展puzzle/keepalived镜像
如需添加自定义TLS证书、配置或环境文件,建议扩展镜像。示例Dockerfile:
dockerfileFROM puzzle/keepalived:<当前版本> LABEL maintainer="你的姓名 <your@name.com>" ADD keepalived.conf /container/service/keepalived/assets/keepalived.conf ADD environment /container/environment/01-custom ADD scripts.sh /container/service/keepalived/assets/notify.sh
测试
使用Bats(Bash自动化测试系统)进行测试:
bash# 安装Bats后,在项目目录执行 make test
基础镜像:osixia/light-baseimage
本镜像基于osixia/light-baseimage构建,更多信息见https://github.com/osixia/docker-light-baseimage%E3%80%82
感谢以下项目:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


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