gpt4 book ai didi

macos - 如何从终止的附加Docker容器中正常恢复?

转载 作者:行者123 更新时间:2023-12-02 19:36:45 24 4
gpt4 key购买 nike

假设我在一个Terminal窗口中运行此Docker命令:

$ docker run --name stackoverflow --rm ubuntu /bin/bash -c "sleep 5"

在退出之前,我在第二个“终端”窗口中运行此命令:
$ docker run -it --rm --pid=container:stackoverflow terencewestphal/htop

我将成功看到 htop在第二个容器中运行,显示bash sleep进程正在运行。到现在为止还挺好。

5秒后,第一个容器将退出,代码为 0。都好。

此时,第二个容器将以代码 137(SIGILL)退出。这对我来说也很有意义,因为第二个容器刚刚连接到第一个容器。

问题是这弄乱了macOS的 Terminal.app的状态:
  • 终端的光标消失。
  • 单击“终端”窗口将导致输入鼠标位置字符作为输入。

  • Docker SIGILL

    我希望找到一种避免弄乱 Terminal.app状态的方法。有什么建议么?

    最佳答案

    您无法避免这种行为,因为终止终端状态是设置终端状态的首要任务,但是使用SIGKILL终止终端状态是无法做到的。但是,您可以使用reset命令自己修复此终端窗口,该命令旨在初始化终端状态。

    关于“附加”容器:
    --pid=container:<name>选项意味着新容器将在第一个容器的PID namespace 中运行,并且pid_namespaces(7) man page表示:

    If the "init" process of a PID namespace terminates, the kernel terminates all of the processes in the namespace via a SIGKILL signal.

    关于macos - 如何从终止的附加Docker容器中正常恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44190992/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com