Docker:执行一个需要tty的程序

我有一个取决于terminal特性的实用程序。 我想在Docker容器中执行它。 (这个程序本身不是一个交互式的程序,它是一个老的程序,是这样写的)。

docker run -i -t或者docker exec -i -t应该打开一个tty到容器中。 但是,这是发生了什么..

 user@1755e1f3f735:~/region/primer/cobol_v> kickstop [Error] Unable to run without terminal device (tty) user@1755e1f3f735:~/region/primer/cobol_v> tty not a tty 

当docker命令(run / exec)的-t选项应该给出'tty'时,tty命令返回'not a tty'。 这是令人费解的。

我在openSuse和fedora23主机和映像上遇到过这个问题。 我使用了'guake',MATE(Gnome?)terminal仿真器,结果相同。

有没有解决这个问题? 或者这是由devise,必须更换/重写我的工具?

我遇到了同样的问题,并发现“dockerexec -ti容器脚本/ dev / null”解决了这个问题。

用上面的命令login容器后,我可以正常使用屏幕。

参考: https : //github.com/docker/docker/issues/8755

我跑了一些实验,这里是调查结果。 希望有人认为他们有用。 (docker命令不完整,只是简单的)

 1. docker run -i -t > tty /dev/console > echo $TERM xterm >kickstop works!! 

2. docker -d后面跟着docker exec -i -t

 >tty not a tty >echo $TERM dumb >kickstop [Error] Unable to run without terminal device (tty) 

3. docker -d后面跟着docker attach你挂接到/ dev / console。 没有提示(因为我正在运行尾-f xxx.log保持容器活着)。 事实上,我需要停止从另一个terminal(使用docker exec)我的应用程序,并停止容器回到提示(主机shell)

4. docker start4. docker start跟上面一样