我是Docker容器的新手,我的问题是如何监视容器内正在运行的进程。例如,我有一个运行Apache的容器。我怎么知道容器内的apache进程是否被杀死但我的容器仍在运行。
我们如何确保容器中的特定进程正在运行,如果该进程出现故障,我们将如何获得警报?
答案 0 :(得分:1)
Dockerfile参考有答案:
https://docs.docker.com/engine/reference/builder/
更具体地讲,HEALTHCHECK指令:
https://docs.docker.com/engine/reference/builder/#healthcheck
基本上,当容器的入口点失败时,容器会死:
https://docs.docker.com/engine/reference/builder/#entrypoint
但是,无论如何,从主机的进程列表中还可以看到在容器内运行的进程,因此您可以安全地使用ps aux| grep httpd
的输出来监视apache的PID。
答案 1 :(得分:0)
在生产中,您不仅要使用docker run,还需要使用诸如kubernetes之类的容器协调器,在其中定义运行状况检查(例如活动性和就绪性探针)的运行状况,协调器将负责其余操作,它将重新启动如果apache由于某种原因而失败,则该容器。
https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes