DockerでMariaDB 10.5を使用できるまでの手順をお伝えします。
ここでは、docker-composeとDocker公式のMariaDB 10.5イメージを用います。

環境

ホストOS

ホストOSはUbuntu 20.04を用いております。


$ cat /etc/lsb-release 

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"

Docker

snapによりインストールしたDockerを用いております。
ただし、sudo権限なしでもdockerコマンドを使用できるようにしております。


$ docker version

Client:
 Version:           19.03.11
 API version:       1.40
 Go version:        go1.13.12
 Git commit:        dd360c7
 Built:             Mon Jun  8 20:23:26 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          19.03.11
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.12
  Git commit:       77e06fd
  Built:            Mon Jun  8 20:24:59 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

docker-compose


$ docker-compose version

docker-compose version 1.25.5, build unknown
docker-py version: 4.2.1
CPython version: 3.5.2
OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016

docker-composeでMySQL8.0を使用するための手順

今回作業するディレクトリを作成します。


$ mkdir mariadb10.5

作業ディレクトリに移動します。


$ cd mariadb10.5

mariadbのボリュームのマウント先となるディレクトリを作成しておきます。


$ mkdir db_data

docker-compose.ymlファイルを作成します。


version: '3'
services:
    db:
        image: mariadb:10.5
        volumes:
          - ./db_data:/var/lib/mysql
        ports:
            - "13306:3306"
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: root_password
volumes:
    db_data:

次のコマンドにより、全体をバックグラウンドで起動させます。


$ docker-compose up -d

次のコマンドにより、コンテナを確認します。


$ docker-compose ps

     Name                   Command             State            Ports         
-------------------------------------------------------------------------------
mariadb105_db_1   docker-entrypoint.sh mysqld   Up      0.0.0.0:13306->3306/tcp

$ docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                     NAMES
3c44604908f0        mariadb:10.5        "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:13306->3306/tcp   mariadb105_db_1

db_dataディレクトリの中身を確認してみます。
/var/lib/mysqlディレクトリとマウントされていることが確認できます。


$ ls db_data/

aria_log.00000001  aria_log_control  ib_buffer_pool  ib_logfile0  ibdata1  ibtmp1  multi-master.info  mysql  performance_schema

MariaDB10.5コンテナに接続およびサンプルデータベースの作成

docker execコマンドによりMariaDBコンテナに接続します。
「3c44604908f0」の部分は、コンテナ作成の都度変更されるものなので、適切なコンテナIDに変更してください。


$ docker exec -it 3c44604908f0 bash

コンテナに接続後、mysqlコマンドによりMariaDBに接続します。
rootのパスワードは、docker-compose.ymlファイルで指定したパスワードを用います。


root@3c44604908f0:/# mysql -u root -p
Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.5-MariaDB-1:10.5.5+maria~focal 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 [(none)]> CREATE DATABASE sample;

Query OK, 1 row affected (0.01 sec)

作成したデータベースを使うようにします。


MariaDB [(none)]>  USE sample;

Database changed

次のコマンドによりテーブルを作成します。


MariaDB [sample]> CREATE TABLE table_sample (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name VARCHAR(10));

Query OK, 0 rows affected (0.008 sec)

作成したテーブルにサンプルデータを追加します。


MariaDB [sample]> INSERT INTO table_sample (name) VALUES ('sample_00'), ('sample_01'), ('sample_02');

Query OK, 3 rows affected (0.003 sec)
Records: 3  Duplicates: 0  Warnings: 0

SELECTにより表示させてみます。


MariaDB [sample]> SELECT * FROM table_sample;

+----+-----------+
| id | name      |
+----+-----------+
|  1 | sample_00 |
|  2 | sample_01 |
|  3 | sample_02 |
+----+-----------+
3 rows in set (0.000 sec)

ここまでで、確認用のデータベースを準備できましたので、次のコマンドによりMySQLから抜けます。


MariaDB [sample]> exit

次のコマンドによりコンテナから抜けます。


root@3c44604908f0:/# exit
Enter password:

Python3から接続してみる

sample.pyとして、次の内容を書き込みます。


import mysql.connector 

con = mysql.connector.connect(db="sample",
                              host="localhost",
                              port=13306,
                              user="root",
                              password="root_password")
cur = con.cursor()
query = "SELECT id, name FROM table_sample"

cur.execute(query)
rows = cur.fetchall()
print(rows)
cur.close()
con.close()

sample.pyを実行します。
table_sampleテーブルが取得できることが確認できます。


$ python3 sample.py 

[(1, 'sample_00'), (2, 'sample_01'), (3, 'sample_02')]

ダンプファイルの作成

次のコマンドにより上記で作成したsampleデータベースのダンプファイルが作成できます。


$ docker exec 3c44604908f0 sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" sample' > ./sample.sql

sample.sqlをテキストで開くと次のようになり、確かにダンプされていることが確認できます。


-- MariaDB dump 10.17  Distrib 10.5.5-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: localhost    Database: sample
-- ------------------------------------------------------
-- Server version	10.5.5-MariaDB-1:10.5.5+maria~focal

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `table_sample`
--

DROP TABLE IF EXISTS `table_sample`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `table_sample` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `table_sample`
--

LOCK TABLES `table_sample` WRITE;
/*!40000 ALTER TABLE `table_sample` DISABLE KEYS */;
INSERT INTO `table_sample` VALUES (1,'sample_00'),(2,'sample_01'),(3,'sample_02');
/*!40000 ALTER TABLE `table_sample` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2020-09-08 21:52:49

ダンプファイルのリストア

次のコマンドにより上記で作成したsampleデータベースのダンプファイルをリストアします。


$ docker exec -i 3c44604908f0 sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" sample' < ./sample.sql

関連する記事

  • これだけは抑えておきたい収益性分析の基本これだけは抑えておきたい収益性分析の基本 収益性分析とは、主に損益起算書上の数値から収益獲得力や投資効率性を測定する分析である。企業が継続的発展を遂げるためには利益確保が欠かせないが、企業経営は好調のときもあれば不調のときもあるため、様々な観点から収益または利益の状況を把握する必要がある。 ここでは、収益性分析の代表的な指標をいくつか紹介する。 これらの代表的な指標を活用するに当たっては、業種によってかなり異 […]
  • 教師あり学習と教師なし学習のふわっとした説明教師あり学習と教師なし学習のふわっとした説明 機械学習の教師あり学習と教師なし学習について、難しい専門用語を全く使わずに概要を分かりやすく説明してみます。 プログラムとは まず、プログラムについてふわっと説明します。 このページをご覧になられているということは、ブラウザと呼ばれるプログラム(例えば、Google ChromeやMicrosoft Edge、Mozilla Firefox、Apple […]
  • Ubuntu,R h2oパッケージのインストールの方法Ubuntu,R h2oパッケージのインストールの方法 Rのパッケージh2oは、さまざまなクラスタ環境内のニューラルネットワーク(ディープラーニング)、ランダムフォレスト、勾配ブースティングマシン、一般化線形モデルなどの並列分散機械学習アルゴリズムを計算するビッグデータのためのオープンソースの数学エンジンH2O用のRスクリプト機能である。 ここでは、ubuntu14.04環境下でh2oパッケージのインストールの仕方についてお […]
  • R言語 CRAN Task View:堅牢な統計的方法R言語 CRAN Task View:堅牢な統計的方法 CRAN Task View: Robust Statistical Methodsの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Martin Maechler Contact: Martin.Maechler at […]
  • WindowsにMariaDBをインストールする手順WindowsにMariaDBをインストールする手順 WindowsにMariaDBをインストールする手順についてお伝えいたします。 ファイルのダウンロード MariaDBのインストールファイルをダウンロードするために、次のサイトに移動します。 MariaDB.org - Supporting continuity and open […]
DockerでMariaDB10.5を使う方法