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