結論
指定したDockerコンテナの対話形式bashシェルを起動して、コマンドの入力を受け付ける状態にすること。
「コンテナに入る」コマンドのおさらい
docker exec [オプション] CONTAINER COMMAND [ARG...]
実行例
// 起動しているコンテナの確認
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
9f9d9249cb39 mariadb:10.5.11 "docker-entrypoint.s…" 18 minutes ago Up 18 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp
// MariaDBが起動しているコンテナに入る
docker exec -i -t 9f9d9249cb39 /bin/bash
//コマンドラインが出力されコマンドを入力できるようになる
root@9f9d9249cb39:/# mysql -u root -p とか
細かく見ていく
docker exec
CONTAINER IDを指定したコンテナのデフォルトディレクトリで新たにコマンドを実行します。
上記コマンドでいうとコンテナのデフォルトディレクトリで「/bin/bash」を実行していることになります。
-i
標準入力を受け付けることを示すオプションです。
-i
をつけないとキーボードからの入力を受け付けてくれません。
// -iを付けないでdocker execしてみる
docker exec -t 9f9 bin/bash
//コマンドラインが正常に表示されているが、キーボードを叩いても何も入力されない
root@9f9d9249cb39:/#
-t
擬似 TTY を割り当てることを示すオプションです。
TTY(TeleTYpeの略とされているそう)とは、標準入出力となっている端末デバイスを示します。
端末デバイスというとハード的なものが連想されますが、ここではターミナルを指します。
-t
をつけないとコマンド入力用のターミナルが割り当てられない...のようなイメージでしょうか。
// -tを付けないでdocker execしてみる
docker exec -i 9f9 bin/bash
//コマンドラインが表示されない
/bin/bash
対話形式のbashシェルを起動してコマンドの入力を受け付ける状態にします。
再まとめ
指定したDockerコンテナの対話形式bashシェルを起動して、キーボードからコンテナ内でコマンドを実行できるようにすることを「コンテナに入る」と表現しているということで理解しました。
コマンドラインを起動して指示を出せるようにしているだけで、あまり「入る」って感じじゃないなあと個人的には思いました。
参考