使用HEALTHCHECK指令构建映像时,当前可以在Dockerfile
中指定运行状况检查。您可以指定要运行的命令,在容器启动后运行第一次检查之前等待的时间(--start-period
),运行状况检查的运行频率(--interval
)以及等待的时间健康检查是否完成(--timeout
),以及健康检查失败后应重试多少次(--retries
)。所有这些都被烘焙到图像中,并且可以在本地可用的图像上用docker inspect
看到。
但是,似乎没有docker run
的参数可以覆盖这些设置。如果您使用的是第三方执行的运行状况检查生成的图像,则您在创建图像时会受到他们决定(或未决定)的决定。例如,当运行状况检查超时太快而创建一个孤立的进程,该进程将无限期地保留在容器和主机的PID表中时,这可能是一个问题。由于频繁进行的健康检查经常会超时,因此PID表可能会在几天内填满。
是否有一种方法可以覆盖图像的运行状况检查设置,或者完全禁用运行状况检查,而无需重建映像?
答案 0 :(得分:2)
似乎您可以覆盖图像默认设置:https://docs.docker.com/engine/reference/run/#healthcheck
docker run
的运行状况检查参数为:
--health-cmd Command to run to check health
--health-interval Time between running the check
--health-retries Consecutive failures needed to report unhealthy
--health-timeout Maximum time to allow one check to run
--health-start-period Start period for the container to initialize before starting health-retries countdown
--no-healthcheck Disable any container-specified HEALTHCHECK
答案 1 :(得分:1)
以下是使用 docker-compose.yml
时配置健康检查的示例。取自 docker 文档。代码见下方链接
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
https://docs.docker.com/compose/compose-file/compose-file-v2/#healthcheck