MAGAZINE
ルーターマガジン
DockerでMariaDBのいろんな環境を簡単に構築する
自分以外の他社にデータベースの環境構築をしてもらう時に、バージョンの指定、cnfの指定、ユーザー名パスワードの指定、などなどが必要となり面倒ですよね。そんな時に予めdockerの1コマンドを用意しておくと、環境構築からデーモンの起動までを「これ実行して」と1コマンドを渡すだけで済ませることが出来ます。既に環境(dockerイメージ)があった場合には勝手にそれを利用してくれる点も楽です。
ということで今回は、mariadbの環境構築、起動をする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つで完了し、再利用性も高まります。特にチームでの開発やテスト環境のセットアップには便利なので、ぜひ活用してみてください。
CONTACT
お問い合わせ・ご依頼はこちらから