2016-03-17 5 views
5

ターミナルの特性に依存するユーティリティプログラムがあります。私はドッカーのコンテナの中でそれを実行したい。 (プログラムはインタラクティブなプログラムではなく、そういう形で書かれた古いプログラムです)。ドッカー:ttyを必要とするプログラムを実行する

docker run -i -tまたはdocker exec -i -tは、コンテナにttyを開く必要があります。しかし、ここで

[email protected]:~/region/primer/cobol_v> kickstop 
[Error] Unable to run without terminal device (tty) 
[email protected]:~/region/primer/cobol_v> tty 
not a tty 

-tオプションは、コマンド(実行/ EXEC)をドッキングウィンドウする

はTTYは「ないのtty」でリターンをコマンド、「TTY」を与えるべきである。..何が起こるかです。これは困惑しています。

私はopenSuseとfedora23のホストとイメージでこれを体験しました。私は、同じ結果を得て、これにMATE(Gnome?)端末エミュレータ「guake」を使用しました。

これに解決策はありますか?またはこれは設計によるもので、私のユーティリティを置き換えたり書き換えたりする必要がありますか?

+0

あなたは 'エコー$のTERM'を投稿することができますか? – user2915097

+0

@ user2915097:あなたの質問は私にいくつかの実験をさせました。私は自分自身の質問に「答えた」。ありがとう。 – yogmk

答えて

0

いくつかの実験を行いましたが、ここでは結果が出ました。誰かが役に立つと思うことを願っています。 (ドッカコマンドが完了し、ただ簡単ではありません)あなたはDEV /コンソール/に執着docker attach 続いdocker exec -i -t

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

3. docker -d続い

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

2. docker -d。私はtail -f xxx.logを実行しているので、プロンプトは表示されません。実際、私は(ドッカexecを使用して)別の端末から自分のアプリケーションを停止し、戻って、私はに走ったdocker attach

+0

と私が使っている端末エミュレータはこれに関係していませんが、 – yogmk

1

上記と同じ 続い

4. docker start(ホストシェル)プロンプトに取得するには、コンテナを停止する必要があります同じ問題を発見し、問題を解決した "docker exec -tiコンテナスクリプト/ dev/null"が見つかりました。

上記のコマンドでコンテナにログインしたら、通常の画面を使用できます。

参考:あなたのコンテナ内https://github.com/docker/docker/issues/8755

関連する問題