このページで解説している内容は、以下の 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=myrootpassMySQLのルートパスワードを「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」であること。
  • PORTS3306/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の学習を進めていきましょう。