はじめに
Dockerを利用すると、簡単にコンテナ上でMySQLの環境を構築できます。これにより、開発環境の構築が迅速になり、バージョン管理や依存関係の問題を回避できます。本記事では、DockerでMySQLコンテナを立ち上げる基本手順から、設定やデータの永続化の方法について解説します。
DockerでMySQLコンテナを立ち上げる
手順1:Dockerイメージのダウンロード
まず、MySQLのDockerイメージをダウンロードします。公式のMySQLイメージを使用する場合、以下のコマンドを実行します。
docker pull mysql:latest
「latest」を指定すると、最新バージョンのMySQLイメージがダウンロードされます。特定のバージョンを使用したい場合は、例えば「mysql:5.7」のように指定します。
手順2:MySQLコンテナの起動
次に、ダウンロードしたMySQLイメージを元にコンテナを起動します。起動時には、環境変数としてMYSQL_ROOT_PASSWORD
を設定する必要があります。
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
上記のコマンドでは、以下の設定を行っています。
--name
:コンテナ名を「mysql-container」と指定。-e MYSQL_ROOT_PASSWORD
:MySQLのrootユーザーのパスワードを設定。-d
:バックグラウンドでコンテナを起動。
コンテナが正常に起動すれば、docker ps
で実行中のコンテナを確認できます。
MySQLコンテナに接続する
手順3:コンテナ内のMySQLにアクセスする
MySQLコンテナに直接ログインして操作するには、以下のコマンドを使います。
docker exec -it mysql-container mysql -u root -p
パスワードの入力が求められるので、コンテナ起動時に設定したMYSQL_ROOT_PASSWORD
(例では「my-secret-pw」)を入力します。
データの永続化
MySQLのデータを永続化しないと、コンテナを停止・削除した際にデータが消えてしまいます。これを防ぐため、ホストマシンにボリュームを設定してデータを永続化します。
手順4:ボリュームを使った永続化設定
以下のコマンドで、/var/lib/mysql
をホストマシンのディレクトリにマウントすることで、データの永続化を行います。
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -v ~/mysql_data:/var/lib/mysql -d mysql:latest
ここでは、ホストマシンの~/mysql_data
ディレクトリにMySQLのデータが保存されます。これにより、コンテナが削除されてもデータは残ります。
MySQLの設定をカスタマイズする
MySQLの設定ファイル(my.cnf
)をカスタマイズするには、設定ファイルをホストマシンに用意し、コンテナにマウントします。
手順5:設定ファイルを利用したカスタマイズ
- ホストマシンに
my.cnf
を作成し、必要な設定を記載します。 - コンテナ起動時に、以下のように設定ファイルをマウントします。
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -v ~/mysql_data:/var/lib/mysql -v ~/my.cnf:/etc/mysql/my.cnf -d mysql:latest
これで、コンテナ内のMySQLは指定した設定に従って起動します。
複数のMySQLコンテナを起動する
異なるバージョンのMySQLを同時にテストしたい場合など、複数のMySQLコンテナを起動することも可能です。それぞれのコンテナに異なる名前を付け、ポートを指定します。
手順6:異なるバージョンで複数コンテナを起動
例えば、MySQL 5.7とMySQL 8.0を別々のコンテナで起動するには以下のようにします。
# MySQL 5.7
docker run --name mysql57-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:5.7
# MySQL 8.0
docker run --name mysql80-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3307:3306 -d mysql:8.0
- MySQL 5.7のコンテナは、ホストの3306ポートでアクセス可能。
- MySQL 8.0のコンテナは、ホストの3307ポートでアクセス可能。
異なるポート番号を指定することで、同一マシン上で異なるバージョンのMySQLを動作させられます。
まとめ
Dockerを活用すると、MySQL環境を短時間で構築でき、異なるバージョンの管理やデータの永続化も簡単に行えます。ここで紹介した手順をもとに、開発やテスト環境でMySQLを効率的に運用してみてください。