MySQL互換データベースMariaDBをDockerで運用:ボリュームでデータを永続化
DockerコンテナでMariaDBのボリュームを使う
Dockerコンテナは、アプリケーションを独立した環境で実行できる軽量な仮想環境です。MariaDBは、MySQL互換のオープンソースデータベースです。DockerコンテナとMariaDBを組み合わせることで、データベース付きのアプリケーションを簡単にデプロイし、管理することができます。
ボリュームとは
Dockerボリュームは、コンテナ内外のデータを永続的に保存するために使用されるディレクトリです。コンテナが削除されても、ボリューム内のデータは保持されます。これは、データベースなどの永続的なデータを保存するのに理想的な方法です。
MariaDBコンテナでボリュームを使用するには、docker run
コマンドを実行する際に -v
オプションを使用します。このオプションは、コンテナ内のディレクトリとホストマシン上のディレクトリをマウントします。
docker run -d -p 3306:3306 \
-v mariadb-data:/var/lib/mysql \
mariadb
この例では、/var/lib/mysql
ディレクトリを mariadb-data
という名前のボリュームにマウントします。これにより、MariaDBデータベースのデータはボリュームに保存され、コンテナが削除されても保持されます。
複数のボリュームを使用する
MariaDBコンテナでは、複数のボリュームを使用することができます。たとえば、ログファイルを別のボリュームに保存したい場合は、次のようにします。
docker run -d -p 3306:3306 \
-v mariadb-data:/var/lib/mysql \
-v mariadb-logs:/var/log/mysql \
mariadb
この例では、/var/lib/mysql
ディレクトリを mariadb-data
ボリュームにマウントし、/var/log/mysql
ディレクトリを mariadb-logs
ボリュームにマウントします。
永続的なボリュームの作成
ボリュームは、コンテナが作成されるときに自動的に作成されます。ただし、ボリュームを永続的にしたい場合は、ボリュームを明示的に作成する必要があります。
docker volume create mariadb-data
このコマンドは、mariadb-data
という名前のボリュームを作成します。このボリュームは、コンテナが削除されても保持されます。
DockerコンテナでMariaDBのボリュームを使用することで、データベースデータを永続的に保存することができます。これは、データベース付きのアプリケーションをデプロイし、管理するのに役立ちます。
MariaDBコンテナを起動する
以下のコマンドを実行して、MariaDBコンテナを起動します。
docker run -d -p 3306:3306 \
-v mariadb-data:/var/lib/mysql \
mariadb
このコマンドは、以下のことを行います。
-d
オプションは、コンテナをデタッチモードで起動します。これは、コンテナがバックグラウンドで実行され、コマンドプロンプトに戻ることができることを意味します。-p 3306:3306
オプションは、コンテナ内のポート 3306 をホストマシンのポート 3306 にマウントします。これは、クライアントがホストマシンから MariaDB に接続できるようにします。mariadb
は、使用する MariaDB イメージの名前です。
MariaDBコンテナに接続するには、以下のコマンドを実行します。
docker exec -it mariadb mysql -u root -p
docker exec
コマンドは、コンテナ内でコマンドを実行します。-it
オプションは、コンテナ内に入力して対話的に操作できるようにします。mysql
は、使用する MySQL クライアントの名前です。-u root
オプションは、root
ユーザーとして接続することを指定します。-p
オプションは、パスワードプロンプトを表示することを指定します。
MariaDBデータベースを作成する
CREATE DATABASE mydatabase;
このコマンドは、mydbase
という名前のデータベースを作成します。
CREATE TABLE mytable (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
);
このコマンドは、mytable
という名前のテーブルを作成します。このテーブルには、id
、name
、email
という 3 つの列があります。
INSERT INTO mytable (name, email)
VALUES ('John Doe', '[email protected]');
INSERT INTO mytable (name, email)
VALUES ('Jane Doe', '[email protected]');
これらのコマンドは、mytable
テーブルに 2 行のデータを追加します。
SELECT * FROM mytable;
docker stop mariadb
docker rm mariadb
docker volume rm mariadb-data
注意事項
- このサンプルコードは、MariaDBコンテナを起動し、使用する方法を示すためのものです。実際のアプリケーションでは、セキュリティとパフォーマンスを考慮した上で、コードを調整する必要があります。
- 詳細については、MariaDB と Docker のドキュメントを参照してください。
MariaDBコンテナでボリュームを使用するその他の方法
Docker Compose は、複数の Docker コンテナを定義し、デプロイするためのツールです。Docker Compose を使用すると、MariaDBコンテナとボリュームを定義する YAML ファイルを作成できます。
version: "3.9"
services:
db:
image: mariadb
volumes:
- mariadb-data:/var/lib/mysql
volumes:
mariadb-data:
この YAML ファイルは、mariadb
という名前のサービスと mariadb-data
という名前のボリュームを定義します。サービスは、mariadb
イメージに基づいており、ボリュームが /var/lib/mysql
ディレクトリにマウントされます。
Docker Compose を使用して MariaDB コンテナを起動するには、以下のコマンドを実行します。
docker-compose up -d
環境変数を使用する
MariaDBコンテナの起動時に、MYSQL_DATA_DIR
環境変数を設定して、ボリュームの場所を指定することもできます。
docker run -d -p 3306:3306 \
-e MYSQL_DATA_DIR=/var/lib/mysql/mariadb \
mariadb
このコマンドは、/var/lib/mysql/mariadb
ディレクトリを MariaDB データディレクトリとして使用します。
docker run コマンドの --mount オプションを使用する
Docker 20.0 以降では、docker run
コマンドの --mount
オプションを使用して、ボリュームをマウントすることができます。
docker run -d -p 3306:3306 \
--mount source=mariadb-data,target=/var/lib/mysql,type=volume \
mariadb
このコマンドは、mariadb-data
という名前のボリュームを /var/lib/mysql
ディレクトリにマウントします。
MariaDBコンテナでボリュームを使用するには、さまざまな方法があります。どの方法を使用するかは、個々のニーズによって異なります。
mysql docker mariadb