MAGAZINE

ルーターマガジン

インフラ/運用

DockerでMariaDBのいろんな環境を簡単に構築する

2024.09.20
Pocket

自分以外の他社にデータベースの環境構築をしてもらう時に、バージョンの指定、cnfの指定、ユーザー名パスワードの指定、などなどが必要となり面倒ですよね。そんな時に予めdockerの1コマンドを用意しておくと、環境構築からデーモンの起動までを「これ実行して」と1コマンドを渡すだけで済ませることが出来ます。既に環境(dockerイメージ)があった場合には勝手にそれを利用してくれる点も楽です。

ということで今回は、mariadbの環境構築、起動をするdockerコマンドを紹介します。

▼目次

  1. パスワード設定のみの起動の仕方
  2. 接続方法の設定
    1. ポート番号で接続する場合
    2. UNIXドメインソケットで接続する場合
  3. その他の設定
    1. mariadbのバージョンを指定する場合
    2. root以外のユーザーを用意する場合
    3. mariadbのcnfファイルの設定をデフォルトから変更する場合
    4. dockerコンテナが停止してもデータを保持したい場合

パスワード設定のみの起動の仕方

特定のパスワードにする場合は--env MARIADB_ROOT_PASSWORD=

$ docker run --detach --name some-mariadb --env MARIADB_ROOT_PASSWORD=my-secret-pw  mariadb:latest

パスワード無しにする場合--env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1

$ docker run --detach --name some-mariadb --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1  mariadb:latest

ランダムなパスワードにする場合--env MARIADB_RANDOM_ROOT_PASSWORD=1

$ docker run --detach --name some-mariadb --env MARIADB_RANDOM_ROOT_PASSWORD=1  mariadb:latest

ランダムに生成されたパスワードはdocker logsから確認出来る

$ docker logs some-mariadb |& grep 'GENERATED ROOT PASSWORD'
2024-09-18 11:02:27+00:00 [Note] [Entrypoint]: GENERATED ROOT PASSWORD: ;#<BVqA|c02tyy*@EKW|c;*>gV|},7Xo

▼コンテナのシェルにログインしてmariadbコンソールにログインした結果

$ docker exec -it some-mariadb bash
root@cd1e2841dcc7:/# mariadb -uroot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 11.5.2-MariaDB-ubu2404 mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

接続方法の設定

ポート番号で接続する場合

-p 13306:3306でホストの13306をコンテナ内の3306に接続する。

$ docker run --detach --name some-mariadb --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 -p 13306:3306 mariadb:latest
$ mariadb -P 13306
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 11.5.2-MariaDB-ubu2404 mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

UNIXドメインソケットで接続する場合

-v /run/docker_mysqld:/run/mysqldでホストのUNIXドメインソケットをコンテナ内の/run/mysqldにマウントする。

$ mkdir /run/docker_mysqld
$ docker run --detach --name some-mariadb --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 -v /run/docker_mysqld:/run/mysqld mariadb:latest
$ mariadb --socket /run/docker_mysqld/mysqld.sock
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 11.5.2-MariaDB-ubu2404 mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

その他の設定

mariadbのバージョンを指定する場合

バージョン10.6を指定する場合mariadb:10.6

$ docker run --detach --name some-mariadb --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1  mariadb:10.6

指定可能なバージョン(タグ)はdockerhubに掲載されている

root以外のユーザーを用意する場合

--env MARIADB_USER=でユーザー名、--env MARIADB_PASSWORD=でパスワードを指定する

docker run --detach --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1  mariadb:latest

mariadbのcnfファイルの設定をデフォルトから変更する場合

max-allowed-packet=1Gの設定を追加する場合は、末尾に --max-allowed-packet=1Gを追加

docker run --detach --name some-mariadb --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 -p 3306:3306 mariadb:10.6 --max-allowed-packet=1G

dockerコンテナが停止してもデータを保持したい場合

-v /var/lib/docker_mysql:/var/lib/mysqlでホストのデータディレクトリをコンテナ内の/var/lib/mysqlにマウントする。

$ docker run --detach --name some-mariadb --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 -v /var/lib/docker_mysql:/var/lib/mysql mariadb:latest

▼dockerコンテナを削除しても、再度同じデータディレクトリを参照すれば削除前にcreateしたdatabaseが参照出来る

$ docker exec -it some-mariadb bash
root@c3211e83fc78:/# mariadb -e 'create database testdb_in_container;'
root@c3211e83fc78:/# exit
exit
$ docker stop some-mariadb
some-mariadb
$ docker rm some-mariadb
some-mariadb
$ docker run --detach --name some-mariadb --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 -v /var/lib/docker_mysql:/var/lib/mysql mariadb:latest
aadeef154fd033a2d6df23434d4d29383a2ede60e23f39b3073de1268ff7e636
$ docker exec -it some-mariadb bash
root@aadeef154fd0:/# mariadb -e 'show databases;'
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| mysql               |
| performance_schema  |
| sys                 |
| testdb_in_container |
+---------------------+

さいごに

今回は、MariaDBの環境構築を簡単にするDockerコマンドを紹介しました。Dockerを使えば、面倒な設定もコマンド1つで完了し、再利用性も高まります。特にチームでの開発やテスト環境のセットアップには便利なので、ぜひ活用してみてください。

Pocket

CONTACT

お問い合わせ・ご依頼はこちらから