エラー「入力デバイスがTTYではありません」質問する

エラー「入力デバイスがTTYではありません」質問する

から次のコマンドを実行しています。ただし、 「入力デバイスが TTY ではありません」というJenkinsfileエラーが表示されます。

docker run -v $PWD:/foobar -it cloudfoundry/cflinuxfs2 /foobar/script.sh

Jenkinsfile対話モードを使用せずにスクリプトを実行する方法はありますか?

script.sh基本的に、Docker コンテナ内で実行したいというファイルがあります。

ベストアンサー1

非対話型にするには、cli からを削除し-it、TTY を削除します。どちらも必要ない場合 (たとえば、Jenkins または cron スクリプト内でコマンドを実行する場合) は、これを実行する必要があります。

-iまたは、TTY からではない入力が docker コマンドにパイプされている場合は、に変更することもできます。コマンド ラインにxyz | docker ...または のようなものがある場合は、これを実行します。docker ... <input

または、TTY サポートが必要で、入力デバイスで利用できない場合は、これを に変更することもできます-t。ログの出力のカラー フォーマットを有効にするために TTY をチェックするアプリの場合、または後で適切なターミナルを使用してコンテナーに接続する場合に、これを実行してください。

または、対話型ターミナルが必要で、Linux または MacOS のターミナルで実行していない場合は、別のコマンド ライン インターフェイスを使用します。PowerShell には、Windows でのこのサポートが含まれていると報告されています。


TTYとは何ですか?これは、エスケープシーケンスやカーソルの移動などをサポートするターミナルインターフェースで、メインフレームに接続されたダムターミナルの昔からあるものです。今日では、Linuxコマンドターミナルとsshインターフェースによって提供されています。詳細はWikipediaの記事をご覧ください

TTY ありとなしでのコンテナ実行の違いを確認するには、TTY なしでコンテナを実行しますdocker run --rm -i ubuntu bash。そのコンテナ内から、を使用して vim をインストールしますapt-get update; apt-get install vim。プロンプトがないことに注意してください。ファイルに対して vim を実行するときは、ファイル内でカーソルを移動してみてください。

おすすめ記事