docker exec -itって何?
よく、Dockerのコンテナの中に入るにはdocker exec -it container_name /bin/bash
って書きますが、これはなんぞやと。
雑に説明すると
コンテナの中で、bashプロセスを新規で立ち上げ、それを操作しています。
exec
execは通常のコマンドにもありますが、『対象のコマンドを実行する』ってコマンドです。
docker execは、『対象のコンテナで、対象のコマンドを実行する』っていうことですね。
execの使い方の例
docker exec コンテナ名 コマンド名
なので、
docker exec container_name ls
とかすると、コンテナの中でlsするわけです。
-it
-iは、Keep STDIN open even if not attached
標準入力を開き続ける。
-tは、Allocate a pseudo-TTY
疑似ttyを割りあてる。
標準入力を開き続け、そこを操作出来るようにする。
→手元の環境で、docker内入力ができるようにする
まとめ
docker execは、『対象のコンテナで、対象のコマンドを実行する』。
-it で、手元の環境で、コンテナ内に入力ができるようになる。
attachとの違い
attachは既にあるコンテナのプライマリプロセスにアクセスします。したがって、exit
やると、コンテナが消えます。
exec -itは、新規にプロセス立ち上げて、それを操作しているために、exit
しても元のプロセス残ってるのでコンテナが動き続けるわけですね。
おまけ:初心者がDockerを勉強した本
■対象の人:環境構築わからない・・・インフラ用語わからない・・・
プログラム書けるけど、インフラ用語わからない、環境構築してみたいけどできない。
私がそうでしたが、以下の本で勉強しました。
インフラの用語を一から説明してくれて、その後にDockerの話をしてくれるので初心者向けです。
Laravelの環境くらいなら、一人で書けるようになりました。
アフィリエイトリンク貼ると、胡散臭くなるけど、単純におすすめしたい本(`・ω・´)ゞ