如果需要想要在一个装有docker的机器上启动一个MySql的container,并且整个MySql container有我想要的数据:
1. 先在已有的MySql instance上准备好数据
2. 备份数据(Linux:copy /var/lib/mysql 或者做成tar包,Windows:copy <mysql_instance>/data 或者做成zip包)
3. 把备份数据(假设为tar包)上传到装有docker的机器上,解压,假设解压后的路径是/home/test/data/mysql
4. 启动一个MySql container
docker run --name my_mysql -e MYSQL_ROOT_PASSWORD=<password> -d -v /home/test/data/mysql:/var/lib/mysql -p 3306:3306 mysql
这里用 “-v” 参数把实际的data目录链接到MySql container的工作目录,这样新创建的MySql container(即MySql instance)就用/home/test/data/mysql这个目录来管理数据了(包括insert、delete、update等DML操作,也包括create,drop等DDL操作)。
也可以用“--mount”参数来设置目录的映射。
缺点是要在多个机器上创建多个container的话,需要把数据文件copy到每个机器上。
还有一种思路是创建自己的MySql image,把整个数据都包含在这个image里,但是这样image会很大,而且有安全风险,如果别人能访问到这个image,就会有数据泄露的风险。