


Docker Hubにあるcentos/mariadb-101-centos7を使ってMariaDBを試してみました。
https://hub.docker.com/r/centos/mariadb-101-centos7/
イメージをダウンロードします。
1 2 3 4 5 6 7 8 9 10 |
$ docker pull centos/mariadb-101-centos7 Using default tag: latest latest: Pulling from centos/mariadb-101-centos7 93857f76ae30: Already exists 275b2b27ff63: Pull complete 87c4f5091613: Pull complete 6e8ccb7e29a4: Pull complete aff5529c497d: Pull complete Digest: sha256:f3c9a6c612762565fc106a888d15d28fed495c0630a8f58aa3a37eb0752010c9 Status: Downloaded newer image for centos/mariadb-101-centos7:latest |
コンテナの作成と起動です。この場合はコンテナ内部にDBを作成します。
・コンテナ名(--name
): mariadb_database
・起動DBユーザ作成(-e MYSQL_USER
): user
・DBユーザパスワード(-e MYSQL_PASSWORD
): pass
・作成するDB名(-e MYSQL_DATABASE
): db
・ポートマッピング(-p
): 3306:3306
・イメージ名: centos/mariadb-101-centos7
1 2 3 4 5 |
$ docker run -d --name mariadb_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 centos/mariadb-101-centos7 b6eb57294cd58e01ca3a66ea9448b354a9934db1d02d3c3fe731b0f526e3f91f $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b6eb57294cd5 centos/mariadb-101-centos7 "container-entrypo..." 11 seconds ago Up 10 seconds 0.0.0.0:3306->3306/tcp mariadb_database |
ホストからMariaDBに接続してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ mysql -u user -p -h 192.168.1.1 Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 7 Server version: 10.1.19-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | db | | information_schema | | test | +--------------------+ 3 rows in set (0.00 sec) MariaDB [(none)]> |
接続できました。ちなみに”mysql -u user -p”ではloaclhostに接続しようとしてエラーになります。
1 2 3 |
$ mysql -u user -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) |
またこのイメージのMariaDBのrootはパスワードの設定がされていませんがlocalhostからの接続のみ許可されています。
ホストからMariaDBにrootで接続してみます。
1 2 |
$ mysql -u root -h 192.168.1.1 ERROR 1045 (28000): Access denied for user 'root'@'192.168.1.1' (using password: NO) |
コンテナ内部からrootで接続してみます。
1 2 3 4 5 6 7 8 9 10 11 |
$ docker exec -it mariadb_database /bin/bash bash-4.2$ mysql -u root Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 4 Server version: 10.1.19-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> |
MariaDBのデータベースをホストに保存すれば、誤ってコンテナを削除してもDBは残ります。
またコンテナ間でDBを共有できるので、ホストのディレクトリにDBを保存するようにしてみます。
ホストマシンにDB保存ディレクトリを作成します。UID等は適宜準備して下さい。
コンテナ内のDB保存場所はmysql:rootなのでこれに合わせます。
1 2 |
bash-4.2$ ls -dl /var/lib/mysql/data/ drwxrwxr-x 6 mysql root 4096 Apr 24 06:15 /var/lib/mysql/data/ |
1 2 3 4 |
$ sudo mkdir /MariaDB_data $ sudo chown mysql:root /MariaDB_data/ $ ls -ld /MariaDB_data/ drwxr-xr-x 2 mysql root 6 Apr 24 16:59 /MariaDB_data/ |
ディレクトリを指定してコンテナを作成、起動します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ docker run -d --name mariadb -v /MariaDB_data:/var/lib/mysql/data -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 centos/mariadb-101-centos7 bd4ec41a2d34814dd0902793afe1f147b705b0dbedd7e0566833097a6232212d $ ls -l /MariaDB_data/ total 28724 -rw-rw---- 1 mysql mysql 16384 Apr 24 17:03 aria_log.00000001 -rw-rw---- 1 mysql mysql 52 Apr 24 17:03 aria_log_control -rw-rw---- 1 mysql mysql 2 Apr 24 17:03 bd4ec41a2d34.pid drwx------ 2 mysql mysql 19 Apr 24 17:03 db -rw-rw---- 1 mysql mysql 8388608 Apr 24 17:03 ib_logfile0 -rw-rw---- 1 mysql mysql 8388608 Apr 24 17:03 ib_logfile1 -rw-rw---- 1 mysql mysql 12582912 Apr 24 17:03 ibdata1 -rw-rw---- 1 mysql mysql 0 Apr 24 17:03 multi-master.info drwx------ 2 mysql mysql 4096 Apr 24 17:03 mysql drwx------ 2 mysql mysql 19 Apr 24 17:03 performance_schema -rw-rw---- 1 mysql mysql 24576 Apr 24 17:03 tc.log drwx------ 2 mysql mysql 6 Apr 24 17:03 test |
Docker Hubには様々なイメージがあり簡単に利用できるので、異なるバージョンの組み合わせでの検証等も直ぐに環境が構築できますね。