1. ホーム

[解決済み】擬似TTYを割り当てるDockerの-tオプションに戸惑う

2022-03-27 13:28:33

質問

このオプションは具体的に何をするのですか?TTYについていろいろ読んできましたが、まだ混乱しています。私は -t で、ただ -i がないと、ユーザー入力を期待するプログラムはエラーを投げるようです。 -t . なぜ疑似TTYが有効であることが重要なのでしょうか?

どのように解決するのですか?

その -t オプションは、Unix/Linuxがターミナルアクセスをどのように扱うかに関係します。以前は、ターミナルはハードライン接続で、後にモデムベースの接続になりました。これらは物理的なデバイスドライバを持っていました(実際の機器の一部でした)。一般的なネットワークが使われるようになると、擬似的なターミナルドライバが開発されました。これは、プログラムに直接記述しなくても、どのような端末機能が使えるかを理解するための分離を行うためです(Read man pages on the stty , curses ).

で、それを背景にして、コンテナをオプションなしで実行すると、デフォルトで標準出力ストリーム(だから docker run | <cmd> が動作します)。 -i で、stdin ストリームが追加されます(だから <cmd> | docker run -i が動作します)。 -t 通常、この組み合わせで -it ターミナルドライバが追加され、プロセスと対話する場合は、おそらくこれが必要です。これは基本的に、コンテナの起動をターミナル接続セッションのように見せかけるものです。