代码之家  ›  专栏  ›  技术社区  ›  philo

如何docker运行,支持Ctrl+C,而不是组合stderr

  •  0
  • philo  · 技术社区  · 7 年前

    我有一堆在docker容器中运行的脚本。它们是由脚本调用的,并不是用来交互的。外部脚本有时在终端中运行,有时不运行(如在CI中)。

    Ctrl键 C ,所以我现在通过了 -t --tty ). 但我发现这个选择结合了 stdout stderr

    有什么办法我可以支持吗 Ctrl键 还有 标准错误

    0 回复  |  直到 7 年前
        1
  •  0
  •   Community Mohan Dere    6 年前

    我找到的最好的解决办法是 tini . 具体来说,在 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键 +

    --tty 不会沾沾自喜 stdout stderr

    它是如何工作的?

    tini explaining it . 但总而言之,docker将进程作为PID 1运行。PID 1通常是init,它有一些职责,比如处理信号。 bash ,以及容器中可能运行的大多数其他程序都不会执行这些操作。 蒂尼 是的,而且做得很好,他们把它加到 docker 作为 --init -g Dockerfile文件 手动操作。

    推荐文章