如何使docker exec stdout与容器中的运行命令一样冗长?

Mic*_*yen 5 stdout docker

如果我使用docker的exec命令运行命令,如下所示:

docker exec container gulp
Run Code Online (Sandbox Code Playgroud)

它只是运行命令,但没有输出到我的终端窗口。

但是,如果我实际上进入容器并手动运行命令:

docker exec -ti container bash
gulp
Run Code Online (Sandbox Code Playgroud)

我看到了gulp的输出:

[13:49:57]使用gulpfile〜/ code / services / app / gulpfile.js
[13:49:57]开始使用“脚本” ...
[13:49:57]开始使用“样式” ...
[13 :49:58]正在启动“ emailStyles” ...
...

如何运行我的第一个命令,仍然将输出发送到终端窗口?

旁注:我看到与npm installs,forever restarts等相同的行为。因此,这不仅是一个大问题,而且可能与docker如何映射stdout有关。

Von*_*onC 6

如何运行我的第一个命令并仍然将输出发送到我的终端窗口?

您需要确保docker run使用该-t选项启动以分配伪 tty。
然后docker exec没有-t仍然有效。

docker exec -it在这里讨论,其中引用了“修复 Docker TERM 变量问题”)

docker@machine:/c/Users/vonc/prog$ d run --name test -dit busybox
2b06a0ebb573e936c9fa2be7e79f1a7729baee6bfffb4b2cbf36e818b1da7349
docker@machine:/c/Users/vonc/prog$ d exec test echo ok
ok
Run Code Online (Sandbox Code Playgroud)