このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker基礎】MySQLコンテナを作成する

MySQLコンテナを作成する
ここでは、Dockerを使用してMySQLコンテナの作成・起動・確認・停止・削除を行います。MySQLは、データベース機能を提供するリレーショナルデータベース管理システム(RDBMS)であり、WordPressなど多くのWebアプリケーションで広く利用されています。Apacheやnginxと比べてやや設定が複雑ですが、基本的な操作を理解すれば簡単に管理できるようになります。以下の手順に従って、MySQLコンテナの基本操作を実践してみましょう。

MySQLとは
MySQLは、オープンソースのリレーショナルデータベース管理システム(RDBMS)です。高速で信頼性が高く、スケーラビリティにも優れているため、Webアプリケーションやデータベース駆動型のサービスに広く採用されています。MySQLは、特にWordPressなどのコンテンツ管理システム(CMS)で使用されることが多く、その性能と安定性から多くの開発者に支持されています。
コンテナの作成から削除までの実践概要
以下の手順に従って、MySQLコンテナの作成から削除までを実践してみましょう。
作成するコンテナの情報
まず、作成するコンテナの詳細情報を確認しましょう。
項目 | 値 |
---|---|
コンテナ名 | MysqlServer |
イメージ名 | mysql |
MySQLのルートパスワード | myrootpass |
使用するコマンドの概要
以下に、ここで使用する主なDockerコマンドとその説明をまとめます。
コマンド | 説明 |
---|---|
docker run | 新しいコンテナを作成して起動する。 |
docker ps | 現在稼働中のコンテナの一覧を表示する。 |
docker exec | 稼働中のコンテナ内でコマンドを実行する。 |
docker stop | 指定したコンテナを停止する。 |
docker rm | 指定したコンテナを削除する。 |
docker ps -a | すべてのコンテナ(稼働中および停止中)を表示する。 |
各コマンドの詳細
1.docker run
新しいコンテナを作成して起動します。MySQLコンテナの場合、環境変数を設定してルートパスワードを指定する必要があります。
オプション | 説明 |
---|---|
--name MysqlServer | コンテナに「MysqlServer」という名前を付けて作成します。 |
-dit | コンテナをバックグラウンドで実行し、インタラクティブモードでターミナルを接続します。 |
-e MYSQL_ROOT_PASSWORD=myrootpass | MySQLのルートパスワードを「myrootpass」に設定します。 |
mysql | 使用するイメージ名。バージョン番号を指定しないため、デフォルトで最新バージョンが使用されます。 |
2.docker ps
現在稼働中のコンテナ一覧を表示します。
3.docker exec
稼働中のコンテナ内でコマンドを実行します。MySQLコンテナの場合、MySQLクライアントに接続するために使用します。
4.docker stop
指定したコンテナを停止します。
5.docker rm
指定したコンテナを削除します。
6.docker ps -a
すべてのコンテナ(稼働中および停止中)を表示します。
MySQLコンテナの作成から削除までの実践
以下の手順に従って、MySQLコンテナの作成から削除までを実践してみましょう。
Step1:「run」コマンドを実行する
まず、MySQLの公式イメージ(mysql
)を使用して「MysqlServer」という名前のコンテナを作成・起動します。今回は既にmysql
イメージがローカルに存在しない場合、イメージのダウンロードが開始されます。
コマンドの実行
PowerShellまたはターミナルに以下のコマンドを入力します。
docker run --name MysqlServer -dit -e MYSQL_ROOT_PASSWORD=myrootpass mysql
コマンドの解説
docker run
: 新しいコンテナを作成して起動します。--name MysqlServer
: コンテナに「MysqlServer」という名前を付けます。-dit
: コンテナをバックグラウンドで実行し、インタラクティブモードでターミナルを接続します。これにより、コンテナは即座に実行状態になります。-e MYSQL_ROOT_PASSWORD=myrootpass
: 環境変数MYSQL_ROOT_PASSWORD
を設定し、MySQLのルートパスワードを「myrootpass」に指定します。mysql
: 使用するイメージ名(MySQLの公式イメージ)。
実行結果
PS C:\Users\joeac> docker run --name MysqlServer -dit -e MYSQL_ROOT_PASSWORD=myrootpass mysql
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
2c0a233485c3: Pull complete
cb5a6a8519b2: Pull complete
570d30cf82c5: Pull complete
a841bff36f3c: Pull complete
80ba30c57782: Pull complete
5e49e1f26961: Pull complete
ced670fc7f1c: Pull complete
0b9dc7ad7f03: Pull complete
cd0d5df9937b: Pull complete
1f87d67b89c6: Pull complete
Digest: sha256:0255b469f0135a0236d672d60e3154ae2f4538b146744966d96440318cc822c6
Status: Downloaded newer image for mysql:latest
434283523a682b137874e28ab45f06241fdf12ad0c90256776ad0108ee24c7b0
注意点
Unable to find image 'mysql:latest' locally
: ローカルにmysql
イメージが存在しないため、Docker Hubからダウンロードが開始されます。- 最後の文字列(例:
434283523a682b137874e28ab45f06241fdf12ad0c90256776ad0108ee24c7b0
)はコンテナIDであり、環境によって異なります。
Step2:「ps」コマンドでコンテナの稼働を確認する
作成・起動した「MysqlServer」コンテナが正しく稼働しているか確認します。
コマンドの実行
docker ps
実行結果
PS C:\Users\joeac> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
434283523a68 mysql "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp, 33060/tcp MysqlServer
確認ポイント
NAMES
列に「MysqlServer」と表示されていること。STATUS
が「Up」であること。PORTS
に3306/tcp, 33060/tcp
と表示されており、MySQLのデフォルトポートが開放されていること。
Step3:「exec」コマンドでMysqlServerコンテナに接続する
稼働中の「MysqlServer」コンテナ内でMySQLクライアントを起動し、データベースに接続します。
コマンドの実行
docker exec -it MysqlServer mysql -u root -p
実行結果
PS C:\Users\joeac> docker exec -it MysqlServer mysql -u root -p
Enter password: ←ここに「myrootpass」と入力
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 9.1.0 MySQL Community Server - GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
解説
docker exec -it MysqlServer mysql -u root -p
: 稼働中の「MysqlServer」コンテナ内でMySQLクライアントを起動し、ルートユーザーとして接続します。-it
: インタラクティブモードでターミナルを接続します。mysql -u root -p
: MySQLクライアントを起動し、ルートユーザーとしてパスワードを求められます。- パスワードとして「myrootpass」を入力すると、MySQLモニターに接続されます。
mysql>
のプロンプトが表示され、SQLコマンドを実行できる状態になります。
終了方法
mysql> exit
Bye
Step4:「stop」コマンドでコンテナを停止する
作成・起動した「MysqlServer」コンテナの動作を停止します。
コマンドの実行
docker stop MysqlServer
実行結果
PS C:\Users\joeac> docker stop MysqlServer
MysqlServer
解説
docker stop MysqlServer
: 「MysqlServer」コンテナの動作を停止します。- 実行結果として、停止されたコンテナ名が表示されます。
Step5:「rm」コマンドでコンテナを削除する
不要になった「MysqlServer」コンテナを削除します。
コマンドの実行
docker rm MysqlServer
実行結果
PS C:\Users\joeac> docker rm MysqlServer
MysqlServer
解説
docker rm MysqlServer
: 「MysqlServer」コンテナを削除します。- 実行結果として、削除されたコンテナ名が表示されます。
注意点
- コンテナを削除する前に、必ずコンテナが停止されていることを確認してください。稼働中のコンテナは削除できません。
- コンテナを削除すると、そのコンテナ内のデータは失われます。必要なデータがある場合は、事前にバックアップを取ってください。
Step6:「ps -a」コマンドに引数を付けて、コンテナの消去を確認する
コンテナが正しく削除されたか確認します。
コマンドの実行
docker ps -a
実行結果
PS C:\Users\joeac> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
確認ポイント
- 「MysqlServer」が一覧に表示されていないことを確認します。
- 他のコンテナが存在する場合でも、「MysqlServer」が削除されていることを確認します。
まとめ
ここでは、Dockerを使用してMySQLコンテナを作成・起動し、その稼働状況を確認、停止、削除する一連の流れを実践しました。以下のポイントを押さえておきましょう。
- MySQLの基本理解: MySQLは強力なRDBMSであり、データベース管理において重要な役割を果たします。特にWordPressなどのCMSで広く利用されています。
- コンテナの作成・起動:
docker run
コマンドを使用し、必要なオプション(名前指定、バックグラウンド実行、環境変数設定)を設定してコンテナを作成・起動します。 - コンテナへの接続:
docker exec
コマンドを使用して、稼働中のコンテナ内でMySQLクライアントに接続し、データベース操作を行います。 - コンテナの停止と削除:
docker stop
およびdocker rm
コマンドを使用して、不要になったコンテナを安全に停止・削除します。 - コンテナの確認:
docker ps
およびdocker ps -a
コマンドを活用して、コンテナの稼働状況や存在を確認します。
MySQLコンテナの作成と管理は、データベースの運用において重要なスキルです。初めての方は、これらの手順を何度か繰り返して実践し、コマンドラインでの操作に慣れることをおすすめします。また、実際にデータベースを扱う際には、セキュリティやデータの永続化(ボリュームの利用)にも注意を払いましょう。
次のコンテンツでは、作成したイメージを削除する方法について詳しく解説します。引き続き、Dockerの学習を進めていきましょう。