docker作为一个虚拟机,或者作为被k8s管理的pod,能持久稳定工作的程度,其实是不如服务器的。
点击输入图片描述(最多30字)
s比方说吧,比如mysql直接安装在一台linux主机上,当这台主机坏了,需要重装时,mysql里的数据是会丢失的,但大家想一下,linux主机出现这种问题的可能性极小。但docker容器一般是安装在linux服务器里的,本人没统计过,但docker容器出错的概率绝对是要大于linux服务器,比如在docker里装了mysql,mysql里也存了十几万条业务数据,如果docker坏了,那么数据就直接全部丢失。
点击输入图片描述(最多30字)
好,姑且不说docker出故障的情况,再说发布版本时的情况,如果mysql直接安装在服务器,那么发版时可以直接运行脚本,顶多重启mysql。而发版时,一般会根据dockerfile文件重新生成新的容器,即删除原来的,创建新的,这时mysql里的数据就会丢失,如果要做数据备份吧,这个工作本来就是无妄之灾,原本如果直接安装在服务器里,就根本不需要这个事情。
点击输入图片描述(最多30字)
所以docker里一般不装mysql等需要持久化数据的组件,因为docker一旦出故障,或者需要重启,这些持久化的数据就会丢失。而现实开发中,在docker里跑mysql的场景一般是测试,比如用dockerfile指定,在创建docker时会拉mysql镜像,启动时做mysql配置,然后在docker里跑个测试脚本,这些脚本会向mysql里插入若干测试数据,同时做测试,测试好了以后,哪怕删除了docker也不要紧,因为其中的测试数据反正没用。
领取专属 10元无门槛券
私享最新 技术干货