目次
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