Docker 容器内存超限自动重启:设置延迟重启和第三方监控
要设置延迟重启启动,可以使用 Docker 的 restart 策略。通过设置 restart 策略为'on-failure' 和'restart-delay' 参数,可以让 Docker 在容器发生失败后延迟一定时间再重启容器。
具体操作:
- 在启动容器时,加上 --restart 选项,将 restart 策略设置为'on-failure':
docker run --restart=on-failure:5 ...
这里的'on-failure' 表示容器发生失败时重启,而'5' 表示重启的最大次数。
- 在 --restart 选项后加上'restart-delay' 参数,将重启延迟时间设置为需要的时间间隔,例如 60 秒:
docker run --restart=on-failure:5 --restart-delay=60 ...
这样就会在容器发生失败后,等待 60 秒再重启容器。
关于第三方监控程序,可以使用类似于 cAdvisor 这样的监控工具。cAdvisor 是一个开源的容器监控工具,可以监控容器的资源使用情况,并提供 API 接口。通过使用 cAdvisor 的 API 接口,可以获取容器的资源使用情况,并根据需要重启容器。
具体操作:
- 安装 cAdvisor 并启动:
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
- 使用 cAdvisor 的 API 接口获取容器的资源使用情况:
curl http://localhost:8080/api/v1.3/containers/<container_id>/stats
这里的<container_id> 是要监控的容器的 ID。
- 根据容器的资源使用情况,判断是否需要重启容器,并使用 Docker API 重启容器:
curl -X POST http://localhost:2375/containers/<container_id>/restart
这里的<container_id> 是要重启的容器的 ID,而 Docker API 的默认端口是 2375。
通过这样的方式,就可以使用第三方监控程序监控容器的资源使用情况,并根据需要重启容器。
原文地址: https://www.cveoy.top/t/topic/nCC5 著作权归作者所有。请勿转载和采集!