我进行了一次谷歌搜索,运气不佳docker run -i some_image而不是 我碰运气docker run -it some_image。
docker run -i some_image
docker run -it some_image
如果我运行docker run -i --name sample some_image bash,则容器在前台运行,但是我无法从所在的外壳与之交互。我什至无法使用CTRL + C停止它。但是,我可以弹出另一个shell并运行docker exec -it sample bash并获得对容器的访问权限。
docker run -i --name sample some_image bash
docker exec -it sample bash
如果我运行docker run -i -d --name sample some_image bash,容器将立即退出。我可以使用它重新启动它,docker start sample然后使其保持启动状态,因此我可以docker exec -it sample bash再次运行它并与之交互。
docker run -i -d --name sample some_image bash
docker start sample
但是,在所有这些情况下,我最终都不得不使用-it与容器进行交互。在哪个世界中我不需要-t旗帜?
-it
-t
干杯
由于-i即使未连接STDIN也会保持打开状态,因此可以进行合成(管道)。 例如:
-i
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
|
integration- cli/docker_cli_attach_test.go