Xubuntu上でMySQLのDockerを使ってみる

Xubuntu上でMySQLのDockerを使ってみる

MySQL clientをインストール

MySQL clientをインストールします。

1
sudo apt install mysql-client

インストールされたことを確認します。

1
mysql --version

MySQL Workbenchをインストール

お好みでMySQL Workbenchをインストールします。

1
sudo snap install mysql-workbench-communit

MySQLのDockerイメージを実行する

利用できるMySQLのDockerイメージを探してみます。

1
docker search mysql

以下のWebサイトでも探すことができます。
https://hub.docker.com/search?q=mysql&type=image

特に理由がなければOfficialのイメージを選びます。早速MySQLを起動してみます。

1
docker run -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql

mysqlを初めて使う場合はまずイメージをダウンロードします。
以下の出力がされるはずです。

1
Unable to find image 'mysql:latest' locally

また、イメージを指定する際にはタグと呼ばれるものをつけることができます。
タグを指定しない場合はデフォルトでlatestになります。
タグは大抵の場合バージョンです。例えば、MySQLの5.7を起動したい場合はmysql:5.7を指定します。

以下のような出力がされたら起動完了です。

1
port: 3306  MySQL Community Server - GPL

ここでもう1つターミナルを起動し、以下のコマンドを実行します。
このコマンドでは実行中のDockerコンテナを確認することができます。

1
docker ps

以下は出力例です。

1
2
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS                 NAMES
2c03c7f2729b mysql "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp, 33060/tcp condescending_mclaren

このMySQLを停止するにはCONTAINER IDまたはNAMESを使います。docker stop <CONTAINER ID or NAMES>と入力します。
このときCONTAINER IDはすべて入力しなくてもOKです。

1
docker stop 2c

MySQLが停止したらもう1度docker psを実行してみます。
実行中のコンテナはないため何も出力されません。
なお、コンテナは停止しても自動で削除されません。
停止したコンテナも確認するには以下のコマンドを実行します。

1
docker ps -a

コンテナを削除するにはdocker rm <CONTAINER ID or NAMES>と入力します。
停止している全てのコンテナを削除する場合はdocker container pruneと入力sます。

1
docker rm 2c

MySQLに接続する

もう一度、MySQLを実行します。

1
docker run -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql

この状態でもう1つのターミナルから以下のコマンドを実行しMySQLに接続します。

1
mysql -h 127.0.0.1 -u root -p

しかし、MySQLには接続できません。これはMySQLのコンテナのポートが外部(xubuntu)に対して公開されていないためです。
一度Dockerコンテナを停止します。次に以下のコマンドを使ってMySQLを起動します。

1
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql

これでMySQLに接続できます。

1
mysql -h 127.0.0.1 -u root -p

パスワードはコンテナの起動時に指定しているmy-secret-pwです。