Docker导出容器

之前测试用的commit和save命令的配合,结果也只是保存一下比如安装了什么命令的效果。
并不能很好的保存数据和文件,这次看到export,据说是将容器内的系统文件导出。

docker export 容器ID > 文件名

import:

Docker可以导入远程文件、本地文件和目录。使用HTTP的URL从远程位置导入,而本地文件或目录的导入需要使用-参数。

export:

类似于import,export命令用于将容器的系统文件打包成tar文件。

实际操作后如上图,还能看到文件大小终于相比save有了变化!

export导出的,还真的就是整个系统的文件,这样也算是能备份保存数据了?回头就再用import导入基础镜像?
save 生成的镜像文件,用load可导入回docker。
两个截然不同,export导出的是能看的目录结构,save生成的因为是镜像文件,所以都要用docker自身才能读的。

实际操作了一次后发现也只是能导出镜像最初的系统文件,运行之后保存生成的文件不会被导出。

docker exec -it 34a0725393d7 bash   #进到线上mysql容器
mysql -uroot -p -h localhost                   #登录mysql
show global variables like "%datadir%";    #查看mysql数据库物理存放路径

如上图,知道了在容器内的路径是/var/lib/mysql
cd 到对应目录下,LS列出可以看到真的有wordpress的数据库文件。

然而,用winrar查看导出的mysql容器系统文件时,这个目录下是空白的,也就是export导出的只能是最初的……

没办法,我只好返回宿主机,反正已知道了路径,就先用笨办法,从容器往宿主机copy文件
退出,但不停止容器
Ctrl+P+Q

copy文件

sudo docker cp 容器id:/path_in_container /path_on_host

docker cp 34a0725393d7:/var/lib/mysql/wordpress /download

可以看到目录文件已拷贝在宿主机内。勉强也算是一种最笨的备份docker数据的办法吧。
以后肯定是要做到不在容器内保存数据,而是挂载到宿主机的卷或共享存储数据之类。

by:铁乐与猫

end

发表评论

电子邮件地址不会被公开。 必填项已用*标注