用Docker跑应用确实省事,但有个坑:容器一删,里面的数据跟着没了。小编第一次删容器把数据库整没,才彻底搞懂数据卷volume这回事。Docker数据卷就是把数据放到容器外面,容器删了数据还在。这篇把挂载、备份、迁移一次讲透,别再让数据裸奔。
容器数据要持久化,数据得放可靠的云主机上,这两家存储和云服务都稳:恒创科技(云服务器)、数脉科技(云主机)。

先搞懂为什么数据会丢
Docker容器是临时的一次性环境,容器里的文件跟着容器生命周期。你一docker rm删除容器,写进容器里的数据就一起消失了。数据库、上传文件这种不能丢的数据,绝不能放容器里,必须放数据卷。数据卷是容器的外挂硬盘,容器没了数据还在。

数据卷和挂载怎么用
Docker有两种持久化:数据卷volume和绑定挂载bind mount。volume由Docker管理,用-v 卷名:/容器路径,简单可靠,推荐优先用。bind mount挂宿主机目录,用-v /宿主机路径:/容器路径,想直接看文件用这个。挂载是给容器提供持久化空间的第一步。

容器怎么备份数据
备份数据卷最常用tar打包。用docker run --rm -v 卷名:/data -v /宿主机备份目录:/backup加tar,把卷内容打包到宿主机。数据库的卷,最好先停容器或用mysqldump导出,别热备份拷半个库。定时备份到异地最稳妥,别等出事才后悔。

数据怎么迁移到新机器
换服务器时,把备份tar包拷到新机器,再用tar解压回新数据卷就行。旧机器打包、新机器解压,步骤和备份一样,方向反过来。迁移前先在新机器建好同名卷,解压进去。数据库迁移注意版本兼容和权限,别解压完起不来。迁移完一定要验证数据能读。

避坑提醒
容器别存重要数据,这是底线。启动时忘了挂卷,新容器就是个空壳,数据全在旧卷里。多容器共用的数据(比如nginx和php),用同一个卷挂,路径别写错。备份要勤、要验证,拷了没验证等于白拷。实在怕麻烦,选台磁盘可靠、备份方便的云主机,出事还能救。

总结:数据放卷不放容器,用volume挂载持久化,tar打包备份,迁到新机再解压验证,Docker数据卷就管理明白了。数据稳了,用Docker才真正放心。



下载 
下载 
下载
下载 
下载
喜欢
顶
难过
囧
围观
无聊



