エンジニアのひよこ_level10

【毎日更新!】新卒3年目エンジニアブログです! プログラムだけじゃなく、マネジメントとかも書いていきたい!

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

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の環境くらいなら、一人で書けるようになりました。

アフィリエイトリンク貼ると、胡散臭くなるけど、単純におすすめしたい本(`・ω・´)ゞ