Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何从连接的Docker容器中正常恢复?_Macos_Docker_Terminal_Htop - Fatal编程技术网

Macos 如何从连接的Docker容器中正常恢复?

Macos 如何从连接的Docker容器中正常恢复?,macos,docker,terminal,htop,Macos,Docker,Terminal,Htop,假设我在一个终端窗口中运行此Docker命令: $ docker run --name stackoverflow --rm ubuntu /bin/bash -c "sleep 5" $ docker run -it --rm --pid=container:stackoverflow terencewestphal/htop 在它退出之前,我在第二个终端窗口中运行它: $ docker run --name stackoverflow --rm ubuntu /bin/bash -c "

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

$ docker run --name stackoverflow --rm ubuntu /bin/bash -c "sleep 5"
$ docker run -it --rm --pid=container:stackoverflow terencewestphal/htop
在它退出之前,我在第二个终端窗口中运行它:

$ 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的
终端。app
的状态:

  • 终端的光标消失
  • 单击终端窗口可将鼠标位置字符输入为输入

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

    您无法避免这种行为,因为htop有责任在终端终止后设置终端状态,但在使用SIGKILL终止时无法执行。但是,您可以使用
    reset
    命令自己修复此终端窗口,该命令用于初始化终端状态

    关于“附加”容器:

    --pid=container:
    选项意味着新容器将在第一个容器的pid名称空间中运行,如下所述:

    如果PID命名空间的“init”进程终止,内核 通过SIGKILL信号终止命名空间中的所有进程


    太棒了,这是一个很好的解决我需要的方法。谢谢