LoginSignup
21
11

More than 1 year has passed since last update.

【Docker】「コンテナに入る」が何をしているか1分で理解する

Posted at

結論

指定した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シェルを起動して、キーボードからコンテナ内でコマンドを実行できるようにすることを「コンテナに入る」と表現しているということで理解しました。

コマンドラインを起動して指示を出せるようにしているだけで、あまり「入る」って感じじゃないなあと個人的には思いました。

参考

21
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
11