Docker容器数据在主机重启时丢失

时间:2015-11-15 15:18:53

标签: ubuntu redis docker dockerfile docker-compose

我有一个在ubuntu服务器上运行的redis服务器的docker容器跟踪一个计数器,该计数器由一个也在容器中运行的节点js app增加。

当我启动我的ubuntu主机时,它运行良好所有容器redis + nodeapp都会自动启动。

访问网址时,我可以使用节点应用程序增加计数器。 我看到redis服务器中的计数器递增,抛出一个redis客户端和网页。

我有一个问题:

  1. 如果我重新启动主机,那么当容器重新启动时(我使用restart:always构建我的容器以在主机重启时重新启动它们) redis服务器中的计数器降为0(计数器未保存)。

  2. 我注意到,如果我将计数器增加到某个值,我们就说20,如果我停止容器redis从主机启动那个容器再次,计数器保存到20.并且重新启动主机后,计数器不会从0开始,而是之前的值20,因此计数器已保存。

  3. 所以我的问题是如何在主机重启时保存数据(redis容器中的计数器)?为什么在我的情况下保存数据的唯一方法是使用docker命令停止容器?

1 个答案:

答案 0 :(得分:0)

你见过http://redis.io/topics/persistence吗?

  

默认情况下,Redis以二进制形式将数据集的快照保存在磁盘上   文件名为dump.rdb。您可以配置Redis以保存它   数据集每隔N秒,如果至少有M个变化   数据集,或者您可以手动调用SAVE或BGSAVE命令。对于   例如,此配置将使Redis自动转储   如果至少更改了1000个密钥,则每60秒将数据集转换为磁盘:

save 60 1000