gpt4 book ai didi

docker - 如何在 docker 日志中记录 docker 健康检查状态?

转载 作者:行者123 更新时间:2023-12-04 17:14:31 24 4
gpt4 key购买 nike

目标
我想通过验证 docker 日志来检查我的 docker 容器是否健康。
需求
我有 两个文件 Dockerfileloop.sh我在我的 docker 中添加了一个 HEALTHCHECK,如下所示:
Dockerfile

FROM alpine
ADD . /
HEALTHCHECK --interval=1s --timeout=30s --retries=3 CMD echo {'health':'healthy'}
CMD ["sh","loop.sh"]
loop.sh
#!/bin/sh

while 1>0;do echo "1"; sleep 2; done;
观察
  • 观察 1
  • docker logs只输出 integer 1loop.sh 中所述但不要输出我的 docker 的健康状态。下面附上一张图片——
    Output of docker logs
  • 观察2
  • docker ps命令显示容器是健康的,因此推断我的健康检查正在工作。请在下面找到所附的图片-
    Output of Docker ps command
  • 观察3
  • docker inspect命令还显示 docker 容器的健康状态。请找到下面的屏幕截图-
    Health status
    问题
    如何登录 {'health':'healthy'}健康检查状态,以便它可以在 docker 日志中看到?

    最佳答案

    好吧,这是 super hacky,我并不为此感到自豪。问题是健康检查在与主进程不同的进程中运行,因此很难写入主进程'stdout .
    但是您可以利用主进程(通常)作为进程 #1 运行并写入 /proc/1/fd/1这是那个过程'stdout .像这样的东西

    FROM ubuntu
    HEALTHCHECK --interval=1s --timeout=30s --retries=3 CMD echo {'health': 'healthy'} | tee /proc/1/fd/1
    CMD tail -f /dev/null
    tail -f /dev/null只是一个保持容器运行的虚拟命令。

    关于docker - 如何在 docker 日志中记录 docker 健康检查状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68929484/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com