LoginSignup
4
0

More than 1 year has passed since last update.

【Docker】『-it』ってなに?no.2

Posted at

パンプキン カフェ (2).png

こんにちは。まゆみです。

Dockerについての記事をシリーズで書いています

今回は第2回目になります

Dockerを使っていると必ず使うことになる『-it』フラッグについて今回の記事では解説していこうと思います

ではさっそく始めていきますね。

-it の正体とは? 

docker exec <container id> redis-cli

と-itなしで実行しても、別にエラーを出るわけではない。

一体 -itってなんのためにつけるの?

-it をきちんと理解することで、色々応用をきかせて、いろんな場面で使えるようになると思います。

-it は二つのオプションが組み合わさってできています(-it と書くことも -i -t と書くこともできるという意味です)

-i

-t

になります

まず、これらがDockerのドキュメントでどのように定義されているか見てみます。

2021-05-27_13-43-12.png
引用元:docker docs

-i (--interactiveでも可)は、STDINを開いておく

-t はpseudo TTYを割り当てる

と書いています。

具体的に一つづつ解説していきますね

-i について

-i がドキュメントでどのように説明されているかは、上記のセクションでみましたが、では一体STDIN とは何でしょうか?

STDIN とはstandard input のことでして、日本語では『標準入力』と訳されています。

標準入力のデフォルトはキーボードからの入力です。

注意!
ただ、Docker Container はデフォルトでは、標準入力を受け取ることができません。

そこで、
あなたのターミナルと、現在実行中のContainer をつないであげる必要があるのです。

STDIN.png

実際、Redisを使って、『-i』がどのような効果を持つのかを -itを付けた時と何もつけなかった時を比べてみます。

(redisはredis-cliというコマンドラインインターフェースを通じて対話しなければならないので exec redis-cliというコードになります)

2021-05-27_14-20-50.png

『myvalueを5にセットする』という対話をあなたのターミナルを通してできるようになりました。

2021-05-27_14-36-42.png

ただ、もし『-it』をなしでコードを実行してみると、結果は下記のようになります

2021-05-27_14-29-26.png

あなたのターミナルを通して、redis-cliとつながることができません。

このように、『-i』を書くことによって、STDINをあなたのターミナルに対してオープンにすることができます

もしくは、あなたのターミナルと実行中のContainerを一方通行ではなく、双方向に可能なコミュニケーションを可能にさせると表現する事もできると思います

-t は?

-t は綺麗にフォーマットするために書くと言われています

例えば、

docker exec -i <container id> redis-cli

と、『t』なしで実行してみましょう

2021-05-27_15-24-58.png

-it で実行した時はオートコンプリート機能があったけど、-iでtがない時はその機能はありません。

まとめ

今回の記事は少し短いですが、ここで終わりにさせていただきます。

次回も引き続きDocker についての記事を書いていきますね。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0