Docker: 创建带数据的MySql container

时间:2023-03-08 16:56:36
Docker: 创建带数据的MySql container

如果需要想要在一个装有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 : 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,就会有数据泄露的风险。