はじめに
Docker環境を構築した際にrails
コマンドやphp artisan
コマンドを使用したかったり、MySQLなどを操作したいときに、起動済みのコンテナに接続するケースがあると思います。
正確なコマンドをよく忘れてしまうので、メモとして残します。
docker execコマンド
$ docker exec -it コンテナ名 bash
コンテナ名を指定するとコンテナ内部に入ることができる。
やったね!
でもなんでこれでコンテナ内部に入れるの???
普段無意識に使ってたから気になる。
折角なので、コマンドについてもう少し調べてみた。
こちらの記事によると、docker exec
コマンドは
実行中のコンテナ環境内で、指定したコマンドを実行してくれるものとのこと。
docker execコマンドの使い方(実例で解説)
さらに以下の記事から引用させていただくと、
オプション-it
を指定することで..........
-iは、Keep STDIN open even if not attached
標準入力を開き続ける。
-tは、Allocate a pseudo-TTY
疑似ttyを割りあてる。
標準入力を開き続け、そこを操作出来るようにする。
→手元の環境で、docker内入力ができるようにする
ということになるらしい。
??????????
擬似ttyって何???????ってなった。
いまいち全容を掴むことができなかった。これ以上は話の大筋から逸れそうなので続ける。
要は-it
オプションを指定したdocker exec
コマンドは
実行中コンテナ内部でshellを起動するコマンドとなり、手元の環境でコンテナ内に入力ができるようになる!ということらしい..........
ちゃんと調べよう............
引用元:docker exec -itって実際は何をしてるの?【90日目】
コンテナ情報出力
ちなみにコンテナ名は以下で確認できます。
$ docker ps -a
docker-composeコマンド
以下のコマンドでは、それぞれdbとappのコンテナに入ることができます。
普段はこっちを使う方が多かった。
$ docker-compose exec db bash
$ docker-compose exec app bash
参考サイト:docker-compose exec