1. YumaInaura

    Posted

    YumaInaura
Changes in title
+Docker— docker run -it の -t を抜くとどうなるのか ( tty 指定なしの interactive モード )
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,75 @@
+普通は `--tty` と `--interactive` を両方指定して docker コンテナに「入る」と思うが、 `--tty` を使わないとどうなるのかを試してみる。
+
+
+## そもそも tty とは何なのか
+
+```
+$ docker run --help | grep tty
+ -t, --tty Allocate a pseudo-TTY
+```
+
+分かりそうで分からない
+
+- [Pseudoterminal - Wikipedia](https://en.wikipedia.org/wiki/Pseudoterminal)
+- [ttyとかptsとかについて確認してみる - Qiita](https://qiita.com/toshihirock/items/22de12f99b5c40365369)
+
+## 実験
+
+```
+docker run --interactive alpine
+```
+
+### プロンプトマーク
+
+まずはプロンプトのマークがないことに気付く。 ( e.g `#` `$` )
+
+何も起きておらず、画面が固まっているように見えるが、実は「何も出力されてこない」だけで、dockerコンテナの操作モードには入れている。
+
+### 上下左右のキーがうまく使えないことに気付く。
+
+```
+^[[C^[[C^[[C
+/bin/sh: : not found
+```
+
+空のコマンドが実行されようとしているように見えるが、たぶんコントロール文字がコマンドとして解釈されようとしている。
+
+## コマンドは打てる
+
+### echo
+
+```
+echo Alice
+Alice
+echo Bob
+Bob
+```
+
+### ls
+
+```
+ls var/lib
+
+apk
+misc
+udhcpd
+```
+
+### exit
+
+```
+exit
+```
+
+## まとめ
+
+tty = 標準入出力となっている端末デバイス を指定しなくてもコマンドは打てるが、端末をうまく操作できなくなる。
+
+## 環境
+
+- Docker version 18.06.0-ce, build 0ffa825
+- Mac OS X High Sierra
+
+## Links
+
+- [Medium](https://medium.com/supersonic-generation/docker-using-docker-run-with-interactive-mode-but-without-tty-what-happens-c1eaae167d1d)