modem7/docker-autohealDocker Autoheal用于监控并重启不健康的Docker容器。尽管Docker的HEALTHCHECK功能已实现,但原生并未包含自动重启不健康容器的机制(相关功能提案参见#22719和#28400)。本镜像作为临时解决方案,填补这一功能空白,直至原生支持--exit-on-unhealthy。
latest (Dockerfile) - 每周构建pinned
--exit-on-unhealthy功能的环境bashdocker run -d \ --name autoheal \ --restart=always \ -e AUTOHEAL_CONTAINER_LABEL=all \ -v /var/run/docker.sock:/var/run/docker.sock \ modem7/docker-autoheal
bashdocker run -d \ --name autoheal \ --restart=always \ -e AUTOHEAL_CONTAINER_LABEL=all \ -e DOCKER_SOCK=tcps://HOST:PORT \ -v /path/to/certs/:/certs/:ro \ modem7/docker-autoheal
autoheal=true 以启用监控AUTOHEAL_CONTAINER_LABEL=all 监控所有运行中容器AUTOHEAL_CONTAINER_LABEL 为现有标签名(标签值需为true)注意:若使用方式b监控所有容器,可通过为特定容器添加标签
autoheal=false排除监控
注意:必须先为容器镜像配置HEALTHCHECK,详情参见 Docker官方文档
TCP连接说明:tcp://用于未加密连接,tcps://用于TLS加密连接。TLS配置参见 Docker HTTPS安全文档
TLS证书要求:需在挂载目录中包含以下文件:ca.pem(CA证书)、client-cert.pem(客户端证书)、client-key.pem(客户端密钥)
如需容器时区与宿主机一致,挂载宿主机时区文件:
bashdocker run ... -v /etc/localtime:/etc/localtime:ro
http://localhost:8000/cfg/autoheal 配置通知渠道(配置详情参见 Apprise文档)APPRISE_URL="http://localhost:8000/notify/autoheal"AUTOHEAL_CONTAINER_LABEL=autoheal # 监控标签名,默认值为"autoheal" AUTOHEAL_INTERVAL=5 # 健康检查间隔(秒),默认5秒 AUTOHEAL_START_PERIOD=0 # 首次健康检查延迟时间(秒),默认0秒 AUTOHEAL_DEFAULT_STOP_TIMEOUT=10 # 容器重启时的停止超时时间(秒),默认10秒(Docker默认值,可通过标签覆盖) DOCKER_SOCK=/var/run/docker.sock # Docker API连接地址,默认UNIX套接字 CURL_TIMEOUT=30 # Docker API请求超时时间(秒),默认30秒 WEBHOOK_URL="" # 容器重启后发送通知的Webhook URL WEBHOOK_JSON_KEY="content" # Webhook请求中消息内容的JSON键名 APPRISE_URL="" # Apprise通知配置URL POST_RESTART_SCRIPT="" # 容器重启后执行的脚本路径(需挂载到容器内)
autoheal.stop.timeout=20:为特定容器设置重启时的停止超时时间(秒),覆盖默认值以下示例演示如何在容器重启后执行自定义脚本,脚本接收参数:CONTAINER_NAME(容器名称)、CONTAINER_SHORT_ID(容器短ID)、CONTAINER_STATE(容器状态)、RESTART_TIMEOUT(重启超时时间)
bash# 构建测试镜像(可选,直接使用modem7/docker-autoheal亦可) docker build -t autoheal . # 运行容器并配置重启后脚本 docker run -d \ -e AUTOHEAL_CONTAINER_LABEL=all \ -e POST_RESTART_SCRIPT=/scripts/post_restart.sh \ -v ./scripts:/scripts \ # 挂载宿主机脚本目录到容器内 -v /var/run/docker.sock:/var/run/docker.sock \ autoheal
bash# 构建测试镜像 docker build -t autoheal . # 启动测试容器 docker run -d \ -e AUTOHEAL_CONTAINER_LABEL=all \ -e POST_RESTART_SCRIPT=/scripts/post_restart.sh \ -v /var/run/docker.sock:/var/run/docker.sock \ autoheal
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务