什么时候在Docker容器中使用不带`–tty`的`–interactive`?

我做了一些谷歌search,并没有运气find一个案件,我运行docker run -i some_image而不是docker run -it some_image

如果我运行docker run -i --name sample some_image bash ,容器运行在前台,但我不能从我进来的shell进行交互。我甚至不能用CTRL + C停止它。 但是,我可以popup另一个shell并运行docker exec -it sample bash并访问该容器。

如果我运行docker run -i -d --name sample some_image bash ,容器立即退出。 我可以用docker start sample重新启动它,然后它保持运行,所以我可以运行docker exec -it sample bash并再次与之交互。

然而,在所有这些情况下,我最终最终会使用-it来与我的容器进行交互。 在什么世界上,我不需要-t标志?

干杯

由于-i即使不连接,也能保持STDIN打开,因此允许组合(pipe道)。
例如:

 docker run ubuntu printf "line1\nline2\n" | docker run -i ubuntu grep line2 | docker run -i ubuntu sed 's/line2/line3/g' 

(来源: 问题14221 )

要么:

 $ echo hello | docker run -i busybox cat hello 

(来源: 问题12401 )

现在想象一下,这不是在键盘前面,而是在一个脚本中使用,你可以通过比shell更好的东西来写入进程stdin | :示例integration-cli/docker_cli_attach_test.go