尽管有“--interactive”,Docker 仍会关闭 STDIN

尽管有“--interactive”,Docker 仍会关闭 STDIN

我正在尝试分离并重新连接到以前台模式启动的 Docker 容器docker run。我看到的问题是,在初始分离期间,Docker 意外关闭了 STDIN。

以下是示例脚本:

/tmp/echo.sh

#!/bin/bash

while read line
do
  echo "Received: $line"
done < "${1:-/dev/stdin}"  

echo "STDIN closed"

while [ 1 ]; do
  echo "Still alive"
done

因此理论上我会这样做:

# docker run -i --sig-proxy=false --name=test --volume=/tmp:/tmp debian /tmp/echo.sh

然后按 CTRL+C 结束docker run命令(不转发 INT 信号),然后:

# docker attach --sig-proxy=false test

我看到的问题是关闭docker run命令也会关闭 STDIN。容器继续运行,并且在使用docker attach它时只会发送垃圾邮件Still alive

但是,如果我运行以下命令,则 STDIN 将保持打开:

docker run -di --sig-proxy=false --name=test --volume=/tmp:/tmp debian /tmp/echo.sh

然后我可以docker attach按预期使用,docker attach使用 CTRL+C 关闭该进程,然后再次运行它,同时 STDIN 始终保持打开状态。

如何docker run在不关闭 STDIN 且不以分离模式启动的情况下关闭初始命令?

相关内容