Docker 健康檢測(cè)是一種維護(hù)容器健康狀態(tài)的方法,可以幫助用戶在容器運(yùn)行期間識(shí)別和修復(fù)錯(cuò)誤。
在 Dockerfile 中,可以通過(guò) HEALTHCHECK 命令來(lái)定義容器內(nèi)應(yīng)用的健康檢查方式,例如可以檢測(cè)應(yīng)用程序是否響應(yīng) HTTP 請(qǐng)求或者是否能夠與數(shù)據(jù)庫(kù)建立連接。以下是一個(gè)例子:
HEALTHCHECK --interval=30s --timeout=3s \ CMD curl -f http://localhost/ || exit 1
這里定義了一個(gè)每 30 秒運(yùn)行一次的健康檢查,如果檢查失敗超過(guò) 3 秒鐘,容器就會(huì)被標(biāo)記為不健康。
在運(yùn)行容器時(shí),可以使用 docker ps 命令查看容器的健康狀態(tài):
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fcd4a4cb5852 nginx "nginx" 2 minutes ago Up 2 minutes (healthy) 80/tcp mynginx
這里顯示了一個(gè)運(yùn)行中的 Nginx 容器,健康狀態(tài)標(biāo)記為 healthy。
Docker Compose 還提供了檢測(cè)容器健康狀態(tài)的方式,在 compose.yaml 文件中,可以使用 healthcheck 配置來(lái)定義容器應(yīng)用的健康檢查方式:
version: "3" services: web: image: nginx healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 1m timeout: 10s retries: 3
這里定義了一個(gè)每分鐘運(yùn)行一次的健康檢查,如果檢查失敗超過(guò) 10 秒鐘,最多重試 3 次。
總體來(lái)說(shuō),Docker 健康檢測(cè)是一種保障容器健康運(yùn)行的重要機(jī)制,可以同時(shí)幫助用戶優(yōu)化應(yīng)用程序的資源利用率和運(yùn)行效率。