我有一堆在docker容器中运行的脚本。它们是由脚本调用的,并不是用来交互的。外部脚本有时在终端中运行,有时不运行(如在CI中)。
Ctrl键 C ,所以我现在通过了 -t --tty ). 但我发现这个选择结合了 stdout 和 stderr
-t
--tty
stdout
stderr
有什么办法我可以支持吗 Ctrl键 还有 标准错误
标准错误
我找到的最好的解决办法是 tini . 具体来说,在 Dockerfile :
Dockerfile
ENV TINI_VERSION v0.18.0 ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini RUN chmod +x /tini ENTRYPOINT ["/tini", "-g", "--"]
-g ,这使得 Ctrl键 +
-g
--tty 不会沾沾自喜 stdout 和 stderr
tini explaining it . 但总而言之,docker将进程作为PID 1运行。PID 1通常是init,它有一些职责,比如处理信号。 bash ,以及容器中可能运行的大多数其他程序都不会执行这些操作。 蒂尼 是的,而且做得很好,他们把它加到 docker 作为 --init -g Dockerfile文件 手动操作。
tini
bash
蒂尼
docker
--init
Dockerfile文件