KDOC 74: The input device is not a TTYを理解する
この文書のステータス
- 作成
- 2024-02-07 貴島
- レビュー
- 2024-02-08 貴島
概要
GitHub Actionsでdocker runするとき、-iオプションをつけると“The input device is not a TTY”というエラーになる。これはなにか、書く。
-i
はインタラクティブオプション。標準入力を開いたままにして、コンテナ内のプロセスがユーザからの入力を受け取れるようにする。
調べる
まずGitHub Actions上で試す。ttyではないことを確かめる。
tty # => not a tty
ttyではないということは、標準入出力となっているデバイスがないということだ。デバイスがないのにどうやって表示しているのかというと、標準出力経由だ。ttyと標準出力は異なる。
ブラウザのコンソール画面に見えている画面は入力を受け付けてない。プロンプトは出てない。考えてみると、インタラクティブさは必要ないので自然である。入力を受け付けられないのでinput device is not a TTYと出る。
手元のDockerで近そうな状況にして試す。ttyはなく、インタラクティブでもない。
docker run --rm ubuntu tty
not a tty
したがってGitHub Actions上では、ワークフローファイルのコマンドを↓このような感じで実行しているのではないか。
docker run --rm ubuntu echo {ここでわれわれのコードを実行している感じか?}
{ここでわれわれのコードを実行している感じか?}
なので、標準出力が見えているだけ。