在某个系统中,功能性的服务使用 docker stack deploy xxx 启动,某个数据库的服务单独使用 docker run xxx 启动,数据库服务没有将存储的位置挂载出来;结果重启了服务器,再登录到服务器重启服务的时候,发现之前数据库里的数据可能会消失(如果再使用 docker run 启动的话)。
解决办法1
数据丢失,一般最直接的想法是重新倒腾一次数据,但这样工作量很大。下次再启动的时候,把存储挂载到硬盘。不过也还有一个更为简单的方法。
解决办法2
可以使用 docker start container_name
再次将容器启动,这样的话数据还在。不过这也只是个临时的解决办法。
docker启动的镜像,如果不将数据映射出来的话,会存储在默认的volume;即使用docker restart xxx重启容器,那变动的数据也还是在的。
也就是说,在这个地方服务器重启了,容器挂掉了(使用docker ps查看,其容器状态是Exited),但其实之前的数据还会在默认的volume下,只有删除掉容器的时候,变动的数据才会丢失。
其实最好的办法,就是将容器的存储目录挂载出来。另外,一般来讲,数据库服务不应该使用容器启动。
西部数码的容器云产品是基于docker技术实现,拥有上万Linux镜像,灵活强大,可弹性扩展,自由轻松搭建私有网络,可做集群服务。性价比高,容器云产品购买链接 https://www.west.cn/paas/container/