前提条件
DBコンテナは事前に起動させておくこと。(起動していないコンテナにはアクセスできないです。)
RailのMySQLのDBコンテナに接続する例
以下コマンドを実行してDBコンテナのコンテナIDを取得します。
1 |
docker ps |
下記コマンドでDockerのDBコンテナにシェルの標準出力で接続します。
1 |
docker exec -it DBコンテナのID /bin/bash |
下記コマンドを実行し、パスワードを入力してMySQLに接続します。
1 2 |
root@2d9b404c2441:/# mysql -u root -p Enter password: |
データベースを確認します。
1 |
mysql> show databases; |
色々とテーブルが表示されますが、下記のテーブルを使います。
1 |
mysql> use app_development |
テーブルの一覧を表示します。
1 |
mysql> show tables; |
テーブルの中身を見ることが可能です。
1 |
mysql> select * from users; |
接続状態から抜けるには以下のコマンドを使います。
1 |
exit |
これを打ったからといってコンテナ自体が停止することはないのでご安心ください。
「docker exec -it DBコンテナのID /bin/bash」の意味を解説
docker exec
起動中のコンテナに命令を送るDockerコマンドになります。(コンテナに対して直接命令を送るのではなく、あくまでコンテナ内でlinuxコマンドを実行させるという意味の命令になります。)
-it
コンテナを対話操作するために付けています。
-i(interactive)
コンテナの標準入力に接続してコンテナを対話操作することができます。
-t(tty)
擬似ターミナルを割り当てます。Unix系OS(LinuxやMac)などではttyコマンドでターミナルの名前を表示させることができますね。
この組み合わせのオプションでシェルをすぐに終了させずに双方向にやり取りする形で実行させる手法があります。
/bin/bash
docker execで最初に実行させているコマンドになります。
シェル(上記の場合はbash)を起動するコマンドになります。上記コマンドではコンテナ内でbashを対話シェルとして起動しています。シェルの入力にターミナルを割り当てることになります。
exitを実行した場合は上記のシェルを終了させているという挙動になっています。
この記事へのコメントはありません。