mysql容器保存为镜像实战操作(拷贝方法)

如果“容器A”与宿主机进行了目录挂载,并且“容器A”中存在大量的数据库表的话,使用该“容器A”去保存为“镜像A”,并去创建“容器B”时,会产生很长的时间;故我们不采用该方法,我们直接使用时间较短的拷贝方法;

1、我们在使用mysql镜像创建容器时并没有为其进行路径映射,但是宿主机会帮我们自动进行映射;
在这里插入图片描述
2、上图我们可以很直观的看到宿主机路径、容器路径;故我们先将宿主机该映射路径下的数据拷贝到备份文件夹下,指令:cp -rf /var/lib/docker/volumes/1edaa1bd95398dac1eeb0e0b0e7e1fdd507f79cb3971c54ba358bbeebf81c211/_data /mysql 意为:将前一个路径下的数据拷贝到/mysql中(注意:该指令要在宿主机根目录下执行,并且一定要加上-rf)
在这里插入图片描述
3、然后我们这里可以直接使用容器A保存为镜像A,指令:docker commit 容器A 新镜像A:标签号
在这里插入图片描述
4、接下来我们使用新镜像A来创建容器B,并对其进行端口映射,指令:docker run -id --name=容器B -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 新镜像A:标签号
在这里插入图片描述
5、最后把命令行退出到宿主机根目录,执行指令docker cp /mysql/ mysql2:/var/lib/,拷贝完得重启容器,这时我们去windows环境下的mysql客户端进行连接,发现新连接下能看到我们在容器A中创建的的数据库表;
在这里插入图片描述

解释

因为容器A与宿主机进行了目录挂载,故在宿主机中进行了端口映射,而后在windows中进行了数据库表创建,都会同步到容器A中,我们把连接以及库表信息全拷贝到了备份目录/mysql中,之后就可以直接拷贝至新容器下,而避免了在创建容器的时候直接进行目录挂载(前面说了,当数据库表的数据很大时,这个创建过程就特别漫长~~~)

发布了31 篇原创文章 · 获赞 12 · 访问量 3734

猜你喜欢

转载自blog.csdn.net/z19950712/article/details/104209831