エンジニアの卵_level1

【毎日更新!】エンジニアの卵のブログです!技術以外も書いたり。

docker exec -itって実際は何をしてるの?【90日目】

docker exec -itって何?

よく、Dockerのコンテナの中に入るにはdocker exec -it container_name /bin/bashって書きますが、これはなんぞやと。

exec

execは通常のコマンドにもありますが、『対象のコマンドを実行する』ってコマンドです。

docker execは、『対象のコンテナで、対象のコマンドを実行する』っていうことですね。

docker exec コンテナ名 コマンド名なので、
docker exec container_name lsとかすると、コンテナの中でlsするわけです。

-it

-iは、Keep STDIN open even if not attached
標準入力を開き続ける。

-tは、Allocate a pseudo-TTY
疑似ttyを割りあてる。

したがって、標準入力を開き続け、そこを操作出来るようにする。
/bin/bashbashを動かしてるわけだから・・・!

bashプロセスを新規で立ち上げ、それを操作しているわけですね。

attachとの違い

attachは既にあるコンテナのプライマリプロセスにアクセスします。したがって、exitやると、コンテナが消えます。

exec -itは、新規にプロセス立ち上げて、それを操作しているために、exitしても元のプロセス残ってるのでコンテナが動き続けるわけですね。

日記

今回、ttyとか、bashとか、STDINとかの単語説明めっちゃ省いてしまっている・・・

まあ自分もttyを上手く説明出来ないわけですが・・・

こうやって『よくわからないけど、使えてるからいいや』をそのままにすると、
『障害に対応出来ない』『応用して新しいことが出来ない』ので、地道に潰していきたいところ。

とりあえず今回でdocker exec -itはコンテナに入る魔法の呪文から卒業出来た・・・かな?

日記2

今日他社のエンジニアと交流会しました。

中途、マネージメント出来る人材の不足、プログラミング経験済み新卒の母数が増えてるのではとか、
オンデマンドのインフラの話、クラウドの話、 仮想通貨のお話・・・w

いやもう、本当に良い時間でした。いろいろ勉強になりました!
時間を忘れて話してました。ってことで、慌ててブログ書いた次第。

これからも交流を広げていきたいところ!がんばるぞー!