以把旧服务器的mysql容器迁移到虚拟机上为例
1.旧服务器查看路径映射
首先查看mysql容器的路径映射
docker inspect mysql
2.基本数据由旧服务器迁移到新服务器
可以看到mysql容器的基本数据在/mydata/mysql
目录下,那么先在新服务器建立/mydata
目录,然后把旧服务器的/mydata/mysql
目录下载到本地,再通过ftp或者其他工具上传到新服务器
3.在旧服务器将需要迁移的容器提交为一个镜像
docker commit mysql gulimall-mysql
4.在旧服务器将镜像文件保存为tar
docker save -o gulimall-mysql.tar gulimall-mysql
5.将tar文件转移到新服务器
先在旧服务器把gulimall-mysql.tar
下载到本地,再通过工具或者scp命令上传到新服务器
6.在新服务器将tar文件恢复为镜像
docker load -i gulimall.tar
查看镜像
docker images
7.在新服务器运行容器
加载完成后如果有docker-compose.yml文件的,直接用文件启动容器即可
没有的手动启动(要和之前在旧服务器创建容器的配置一样,镜像名换成恢复出来的镜像名,容器名自定义)
docker run -p 3306:3306 --name gulimall-mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d gulimall-mysql
8. 进入容器内部查看数据是否存在
[root@localhost /]# docker exec -it gulimall-mysql /bin/bash
root@c79728e96b23:/# pwd
/
root@c79728e96b23:/# cd /var/lib
root@c79728e96b23:/var/lib# ls
apt dpkg misc mysql mysql-files mysql-keyring pam systemd vim
root@c79728e96b23:/var/lib# cd mysql
root@c79728e96b23:/var/lib/mysql# ls
可以看到存在,然后进入mysql查看数据库是否存在
注意一点,在旧服务器设置的mysql密码会同步到新服务器,也就是说在新服务器登录时使用的密码不能是
上面-e MYSQL_ROOT_PASSWORD=root \
的root,我的是因为旧服务器的密码就是root
如果想修改新服务器mysql容器的密码,就先通过旧服务器的mysql密码进入新服务器的mysql,在使用
mysql>user mysql;
mysql>update user set authentication_string=password("newpassword") where user='root';
mysql> flush privileges;