joh*_*ich 6 logging docker dockerfile
客观的
我想通过验证 docker 日志来检查我的 docker 容器是否健康。
要求
我有两个文件,即Dockerfile
和loop.sh
我已将 HEALTHCHECK 添加到我的 docker 中,如下所示:
Dockerfile
FROM alpine
ADD . /
HEALTHCHECK --interval=1s --timeout=30s --retries=3 CMD echo {'health':'healthy'}
CMD ["sh","loop.sh"]
Run Code Online (Sandbox Code Playgroud)
循环语句
#!/bin/sh
while 1>0;do echo "1"; sleep 2; done;
Run Code Online (Sandbox Code Playgroud)
观察
仅docker logs
输出integer 1
中提到的内容,loop.sh
但不输出我的泊坞窗的健康状态。下面附有一张图片 -
该docker ps
命令显示容器运行状况良好,因此推断我的运行状况检查正在运行。请找到下面的附图 -
该docker inspect
命令还显示 docker 容器的健康状态。请找到下面的屏幕截图 -
问题
如何记录此{'health':'healthy'}
健康检查状态以便可以在 docker 日志中看到它?
Han*_*ian 11
好吧,这太黑客了,我并不为此感到自豪。问题是健康检查运行在与主进程不同的进程中,因此很难写入主进程'stdout
。
但是您可以利用主进程(通常)作为进程 #1 运行并写入/proc/1/fd/1
which is that process' stdout
。像这样的东西
FROM ubuntu
HEALTHCHECK --interval=1s --timeout=30s --retries=3 CMD echo {'health': 'healthy'} | tee /proc/1/fd/1
CMD tail -f /dev/null
Run Code Online (Sandbox Code Playgroud)
这tail -f /dev/null
只是一个保持容器运行的虚拟命令。
归档时间: |
|
查看次数: |
3370 次 |
最近记录: |