2015-11-15 1007 views
0

我有一个docker容器,运行在ubuntu服务器上的redis服务器跟踪一个计数器,该计数器也由一个容器中运行的节点js应用程序增加。重新启动主机时丢失了Docker容器数据

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

访问一个url,我可以用节点app增加计数器。 我看到在redis服务器中的计数器增加了一个redis客户端和网页。

通过我有一个问题:

  1. 如果我重新启动主机那么当容器重启(我用restart:always建立我的容器重新启动它们在主机重新启动)计数器在redis服务器下降到0(计数器没有保存)。

  2. 我注意到,如果我增加计数器的值到一定值时,让我们说20,如果我停止从主机的容器的Redis和开始该容器再次计数器保存至20和重新启动主机后,计数器不是从0开始,而是先前的值为20,因此计数器已保存。

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

+0

听起来像Redis的不刷新到磁盘。此行为可以自定义,请参阅以下容器文档:https://github.com/jamesbrink/docker-redis –

回答

0

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

默认情况下,Redis将数据集的快照保存在名为dump.rdb的二进制文件 中。如果 数据集中至少有M次更改,或者您可以手动调用SAVE或BGSAVE命令,则可以将Redis配置为每N秒保存一次 数据集。对于 例如,该配置将使得Redis的自动转储 数据集磁盘每60秒,如果至少1000项改为:

save 60 1000 
+0

感谢我从未使用过redis,之后我专注于了解docker,并且我没有详细了解redis ...再次感谢我的谢谢! – Aaleks

相关问题