【发布时间】:2018-09-22 08:57:17
【问题描述】:
我一直在互联网上积极寻找有关此的信息,但这似乎是一个特殊的用例。
我正在尝试在 Kubernetes/Openshift 集群中部署一个运行旧后端的 docker 容器。
容器使用 entrypoint.sh 脚本启动,该脚本将在启动之前初始化后端所需的依赖项。
我希望后端为 PID 1 - 以便使用 docker/openshift 捕获后端日志。
为此,我在 entrypoint.sh 脚本的末尾有一个 exec 命令,它启动我的后端,从而用我的后端替换了 entrypoint.sh 进程(由 docker 分配了 PID 1)。
问题:
在 entrypoint.sh 中执行 exec 时,docker 停止捕获日志,因此在执行“docker logs $MY_CONTAINER_ID”时,我的后端进程没有任何日志被 docker 捕获。
进入容器后,我确实看到一切正常:
我的后端进程以 PID 1 运行,进程文件描述符 1/2 正确设置,捕获我的后端进程的 STDOUT 和 STDERR。
有谁知道这是否是缺少配置问题?或者考虑到我用 exec 替换 PID 1,docker 是否只是设计成这样工作?
【问题讨论】:
标签: docker kubernetes openshift dockerfile