Introduction
為了讓想要保存下來的資料可以不會因為容器停止就蒸發掉
都會使用資料卷掛載到本地檔案系統
像Mysql的資料存放位置在/var/lib/mysql
如果需要移植到其他主機時是不能夠直接cp -r
的
mysql儲存的資料是會辨認主機身份,之前也發現/var/lib/mysql
是不能指定在NFS這類掛載網路硬碟的位置
其中一個解法是先用mysqldump
指令將資料匯出成一個sql檔
然後再匯入到另一個mysql server
Backup
export sql file to local file system
docker exec CONTAINER /usr/bin/mysqldump -u username --password=yourpassword DBNAME > backup.sql
Import
import sql file to sql service in the running container
cat backup.sql | docker exec -i CONTAINER /user/bin/mysql -u username --password=yourpassword DBNAME
無聊冷知識
官方或是mysql的Dockerfile在裡面都已經預設/var/lib/mysql
這位置是指定成資料卷
所以不管docker run
時有沒有添加-v
指定資料卷位置該目錄下的資料都會永久保存
VOLUME /var/lib/mysql