" docker run -dti"与哑终端

时间:2016-02-29 00:54:59

标签: ssh terminal docker

更新:添加了丢失的docker attach。

您正在尝试使用-dti运行docker容器。但我无法使用终端设置为哑。有没有办法改变它(它目前设置为xterm,即使我的ssh客户端是哑巴)

示例:

创建容器

docker run -dti --name test -v /my-folder alpine /bin/ash
docker attach test
apk --update add nodejs
cd /my-folder
npm install -g gulp

最后一个命令总是包含ascii转义字符以移动光标。

我试过"导出TERM = dumb"在正在运行的容器内,但它不起作用。

有没有办法运行"这个使用哑终端?

我是从另一台计算机上的脚本运行的,通过(哑)ssh。

2 个答案:

答案 0 :(得分:1)

更新: 是的-t是问题所在。 但是,如果您想在运行命令时查看整个过程,可能这种方式更好:

docker run -di --name test -v/my-folder alpine /bin/ash
docker exec -it test /bin/ash

最后你需要在完成所有工作后杀死容器。

docker run -d表示"在后台运行容器并打印容器ID" 不要将容器作为守护进程启动

答案 1 :(得分:1)

使用-t设置此https://docs.docker.com/engine/reference/run/#env-environment-variables,但删除命令提示符效果(提示未显示)

可能的解决方案1 ​​删除-t并保留-i。查看命令是否已完成回显已知令牌( ENDENDEND )。即

docker run -di --name test -v /my-folder alpine /bin/ash
docker attach test
apk --update add nodejs;echo ENDENDEND
cd /my-folder;echo ENDENDEND
npm install -g gulp;echo ENDENDEND

不漂亮,但它有效(结果中没有ascii)

可能的解决方案2 使用日志,docker可以注销到linux日志,这可以在容器中执行命令时收集。 (我还没有完全测试这个。但是日志似乎是发生的更好的输出)