end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

docker data volume によるデータの永続化と、data volume containerからのexport

目次

data volume container 作成

$ vi Dockerfile

FROM busybox

VOLUME /var/lib/mysql

CMD ["bin/true"]

containerのbuildと実行

$ docker image build -t example/mysql-data:latest .
$ docker container run -d --name mysql-data example/mysql-data:latest

data volume へのデータ登録

mysql container 実行

$ docker container run -d --rm --name mysql \
  -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" \
  -e "MYSQL_DATABASE=volume_test" \
  -e "MYSQL_USER=example" \
  -e "MYSQL_PASSWORD=example" \
  --volumes-from mysql-data \
  mysql:5.7

mysql への接続

パスワードは不要です

$ docker container exec -it mysql mysql -u root -p volume_test

mysql へのデータ登録と、確認

mysql> CREATE TABLE user(
  id int PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;

mysql> INSERT INTO user (name)
       VALUES ('gihyo'), ('docker'), ('Solomon Hykes');
mysql> SELECT * FROM user;
+----+---------------+
| id | name          |
+----+---------------+
|  1 | gihyo         |
|  2 | docker        |
|  3 | Solomon Hykes |
+----+---------------+
3 rows in set (0.00 sec)

data volume からのexport

$ docker container run -v ${PWD}:/tmp \
  --volumes-from mysql-data \
  busybox \
  tar cvzf /tmp/mysql-backup.tar.gz /var/lib/mysql
tar: removing leading '/' from member names
var/lib/mysql/
var/lib/mysql/ibdata1
var/lib/mysql/ib_logfile1
var/lib/mysql/ib_logfile0
【略】
var/lib/mysql/volume_test/user.ibd
var/lib/mysql/ib_buffer_pool
var/lib/mysql/ibtmp1
$ ls -l
-rw-r--r-- 1 root     root     6924099 Jan 29 20:12 mysql-backup.tar.gz