DockerでMySQLを利用する方法 – 簡単にデータベースをセットアップする手順

DOCKER
この記事は 2 分で読めます。
概要

WordPressやNextcloudなどのアプリケーションをDockerで利用する際、データベースサーバーが必要になる場面が多々あります。特にMySQLは、その高い汎用性と信頼性から、多くのプロジェクトで利用されています。本記事では、Dockerを使ってMySQLコンテナを設定し、仮想環境上で簡単にデータベースを起動する方法を、最新の情報をもとに解説します。

管理人

本記事の読者層は以下の方を想定しています。

本記事の読者層
  • Dockerを利用してアプリケーションを開発したい方
  • Docker上でMySQLを利用したい方
  • 簡単に仮想環境でデータベースを構築したい方
目次

Dockerのインストール

まず、Dockerがインストールされていることを確認してください。まだインストールされていない場合は、次の公式ドキュメントを参考にインストールを行いましょう。

Docker公式ドキュメント

インストール確認方法

Dockerが正しくインストールされているか確認するには、以下のコマンドをターミナルで実行します。

$ sudo $ docker --version

表示されるバージョン番号がインストールされているDockerのバージョンです。例えば、以下のように表示されます。

Docker version 20.21, build 123abc456

MySQLをDockerで利用する方法

ここからは、DockerでMySQLを利用する具体的な手順を解説していきます。本記事では、Ubuntu 18.04 LTS環境においてDockerを使用しますが、他のLinuxディストリビューションやWindows、macOSでも手順はほぼ同じです。

本記事の使用環境

使用環境

  • Docker バージョン: 20.21
  • MySQL バージョン: 5.7(最新のMySQLイメージを使用します)

Docker HubからMySQLイメージを取得する

まず、Docker HubからMySQLの最新イメージをダウンロードします。Docker Hubは、公式のコンテナイメージを提供しているリポジトリです。

https://hub.docker.com/_/mysql

以下のコマンドでMySQLのイメージを取得します。

$ sudo docker pull mysql:latest

mysql:latestと指定することで、最新バージョンのMySQLイメージをダウンロードできます。成功すると、ダウンロードされたイメージが以下のように確認できます。

$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
mysql        latest    a3a2968869cf   4 days ago   538MB
nextcloud    latest    eff70b1472d7   5 days ago   994MB

コンテナの基本的コマンド

本記事では、このMySQLのイメージを使用してDockerの基本的なコマンドの使い方を解説します。

コマンド意味
1docker pulldocker hubでイメージのダウンロード
2docker rundockerのコンテナ化
3docker ps実行中コンテナのリスト
4doker imagedocker hubでダウンロードしたイメージリスト
5docker stopコンテナの停止
6docker rmコンテナの削除

MySQLコンテナの起動方法

次に、MySQLコンテナを起動します。以下のコマンドを実行してください。

$ sudo docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=(passwd) -d mysql
cd40147de5fcf91245b2ced3f0da483db39c4638a91a6716d376b355d2529c62
  • --name some-mysql はコンテナに付ける名前です。
  • -e MYSQL_ROOT_PASSWORD=(passwd) は、MySQLのrootユーザーのパスワードを指定しています。
  • -d はバックグラウンドでコンテナを実行するオプションです。

起動後、コンテナリストを確認して、MySQLコンテナが正しく起動しているか確認します。

$ sudo docker ps -a

以下のような出力が得られれば、MySQLコンテナが正しく起動しています。

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

MySQLのコンテナの停止と削除

MySQLコンテナを停止するには、以下のコマンドを使用します。

$ sudo docker stop some-mysql

コンテナを削除する場合は、コンテナが停止している必要があります。以下のコマンドで削除します.

$ sudo docker rm some-mysql

削除方法は以下の通りです。Dockerのコンテナを「docker stop」で止めからでないと、「docker rm」で削除できません。

実行中コンテナのリスト

$ sudo docker ps -a
CONTAINER ID   IMAGE       COMMAND                  CREATED              STATUS              PORTS                                   NAMES
cd40147de5fc   mysql       "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp, 33060/tcp                     some-mysql
6af0d5c90363   nextcloud   "/entrypoint.sh apac…"   2 days ago           Up 2 days           0.0.0.0:8080->80/tcp, :::8080->80/tcp   friendly_banach

STATUSが「up」となっているため、駆動しています。

$ % sudo  docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
mysql        latest    a3a2968869cf   4 days ago   538MB
nextcloud    latest    eff70b1472d7   5 days ago   994MB

コンテナ内に入って操作する

MySQLの設定やその他の操作を行うために、コンテナ内に入るには以下のコマンドを実行します。

$ sudo docker exec -it a3a2968869cf /bin/bash
or
$ sudo docker exec -it some-mysql /bin/bash

Docker内でテキストエディタ等をインストールするためには、「apt-get update」コマンドを入力後に apt-get install でソフトをインストールします。

$ apt-get update
$ apt-get install vim

コンテナ内でMySQLクライアントにアクセスするには、次のようにします。

$ mysql -u root -p

ここで、MYSQL_ROOT_PASSWORDで設定したパスワードを入力します。

Dockerネットワークの作成

複数のコンテナを連携させて利用する場合、Dockerネットワークを作成する必要があります。以下のコマンドで新しいネットワークを作成します。

$ sudo docker network create network1
70e825fbadf7ce7aab8eae4d1cfc5ac48d5d649a45429aa3a00c2601c58ec3f7

作成したネットワークを確認するには、以下のコマンドを使用します。

出力例:

$ sudo docker network ls
NETWORK ID     NAME       DRIVER    SCOPE
f2780d0f51c7   bridge     bridge    local
2507fa523fea   host       host      local
70e825fbadf7   network1   bridge    local
8f5f8a931f18   none       null      local

作成したネットワークをMySQLコンテナに適用するには、--netオプションを追加してコンテナを起動します。

$ sudo docker run --name some-mysql --net=my-network -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=mydb -e MYSQL_USER=myuser -e MYSQL_PASSWORD=mypassword mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

Docker用のMySQLの起動

以下のようにmysqlを起動します。

$ sudo docker run --name some-mysql --net=network1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=ownclouddb -e MYSQL_USER=owncloudur -e MYSQL_PASSWORD=onwcloudpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --defaut-authentication-plugin=myrootpass

mySQLのデータベース設定

  • MYSQL_ROOT_PASSWORD=myrootpass
  • MYSQL_DATABASE=ownclouddb
  • MYSQL_USER=owncloudur
  • MYSQL_PASSWORD=onwcloudpass

mySQLのデータベース用文字列設定

  • character-set-server=utf8mb4
  • collation-server=utf8mb4_unicode_ci
  • defaut-authentication-plugin=myrootpass

としておきます。

次に、コンテナ内のbashプロンプト上でmysqlを立ち上げます。

$ bash-4.4# mysql -u root -p

ここで、パスワードが求められますが、上記で「MYSQL_ROOT_PASSWORD=myrootpass」と指定してありますのでこれを利用します。

これ以降は普通のmySQLの設定と同じです。

細かいmySQLの利用方法については以下の記事をご参照ください。

まとめ

本記事のまとめ
  • (1) Docker pull mysql→Docker rum mysql
  • Docker stop mysql→Docker rm mysql

という手続きが必要である。

次回の記事をご期待下さい。どうぞよろしくお願いいたします。

関連リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次