MySQL
Docker

docker machineでMySQLを永続化する

More than 3 years have passed since last update.


環境


  • docker-machine version 0.4.1

  • Virtual Box 5.0.4

  • Mac El Cpatian


やりたいこと

開発用にdocker上にMySQLを立てたい

1) docker machine上にデータを永続化させたMySQLを立てる。永続化させるデータはdocker-machineの/home/docker以下に置くものとする

2) タイムゾーンをJSTにする

3) ローカルにあるmy.cnfを読み込ませる


手順


再起動時にバックアップをとる


  1. ローカルから docker-machine sshでログインする

  2. /home/docker以下のバックアップ

cat << EOS > /var/lib/boot2docker/bootlocal.sh

echo "tar cf /var/lib/boot2docker/userdata.tar . -C /home/docker/" >> /opt/shutdown.sh
EOS
chmod +x /var/lib/boot2docker/bootlocal.sh


タイムゾーンをJSTにする



  1. /var/lib/boot2docker/profileexport TZ="JST-9"を追加する


  2. rebootコマンドで再起動


my.cnfを用意する

/Users/hachi/tmp/mysql/my.cnf に用意


my.cnf

[mysqld]

character-set-server=utf8


起動する

docker run --name mysql -p 3306:3306 -e "MYSQL_ROOT_PASSWORD=root" -v /Users/hachi/tmp/mysql:/etc/mysql/conf.d -v /home/docker/mysql:/var/lib/mysql -d mysql:5.6

mysql -uroot -p -h 127.0.0.1

create database test charset utf8;
show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

docker-machine内をみると

docker@default:~/mysql$ pwd

/home/docker/mysql
docker@default:~/mysql$ ls
auto.cnf ib_logfile0 ib_logfile1 ibdata1 mysql/ performance_schema/ test/


追記

実際の開発でデータを入れたらあっという間に/home/docker以下の容量を食いつぶした orz そんなデータいれるなという話ですが。

そのときはdocker-machine create --virtualbox-memory "2024" -d virtualbox defaultで作る

変更前

docker@default:~$ df -h

Filesystem Size Used Available Use% Mounted on
tmpfs 896.6M 230.8M 665.9M 26% /
tmpfs 498.1M 56.0K 498.1M 0% /dev/shm
/dev/sda1 18.2G 1.0G 16.2G 6% /mnt/sda1
cgroup 498.1M 0 498.1M 0% /sys/fs/cgroup
none 464.8G 108.9G 355.9G 23% /Users
/dev/sda1 18.2G 1.0G 16.2G 6% /mnt/sda1/var/lib/docker/aufs
none 18.2G 1.0G 16.2G 6% /mnt/sda1/var/lib/docker/aufs/mnt/2c829511dc3126d6d85561715b775066b47106bc43ae607b15bd4b85d5117287

変更後

docker@default:~$ df -h

Filesystem Size Used Available Use% Mounted on
tmpfs 1.8G 230.7M 1.5G 13% /
tmpfs 1001.4M 0 1001.4M 0% /dev/shm
/dev/sda1 18.2G 1.0G 16.2G 6% /mnt/sda1
cgroup 1001.4M 0 1001.4M 0% /sys/fs/cgroup
none 464.8G 108.8G 355.9G 23% /Users
/dev/sda1 18.2G 1.0G 16.2G 6% /mnt/sda1/var/lib/docker/aufs