LoginSignup
11
13

More than 5 years have passed since last update.

docker machineでMySQLを永続化する

Last updated at Posted at 2015-11-16

環境

  • 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
11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13