DockerでMySQLコンテナを立ち上げる方法と便利な使い方

Sponsored Link

はじめに

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:設定ファイルを利用したカスタマイズ

  1. ホストマシンにmy.cnfを作成し、必要な設定を記載します。
  2. コンテナ起動時に、以下のように設定ファイルをマウントします。
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を効率的に運用してみてください。

ホーム
Docker は、開発者がコンテナー アプリケーションを構築、共有、実行できるように設計されたプラットフォームです。面倒なセットアップは私たちが行うので、あなたはコードに集中できます。
タイトルとURLをコピーしました