Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu 主机重新启动时Docker容器数据丢失_Ubuntu_Redis_Docker_Dockerfile_Docker Compose - Fatal编程技术网

Ubuntu 主机重新启动时Docker容器数据丢失

Ubuntu 主机重新启动时Docker容器数据丢失,ubuntu,redis,docker,dockerfile,docker-compose,Ubuntu,Redis,Docker,Dockerfile,Docker Compose,我有一个docker容器,其中redis服务器运行在ubuntu服务器上,它跟踪一个计数器,该计数器由同样运行在容器中的node js应用程序递增 当我启动我的ubuntu主机时,所有的容器redis+nodeapp都会自动启动 访问url时,我可以使用节点应用程序增加计数器。 我看到redis服务器中的计数器递增,抛出redis客户端和web页面 我有一个问题: 如果我重新启动主机,则当容器重新启动时(我使用重新启动:始终构建容器,以便在主机重新启动时重新启动它们),redis服务器中的计数器

我有一个docker容器,其中redis服务器运行在ubuntu服务器上,它跟踪一个计数器,该计数器由同样运行在容器中的node js应用程序递增

当我启动我的ubuntu主机时,所有的容器redis+nodeapp都会自动启动

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

我有一个问题:

  • 如果我重新启动主机,则当容器重新启动时(我使用
    重新启动:始终
    构建容器,以便在主机重新启动时重新启动它们),redis服务器中的计数器将降至0(计数器未保存)

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

  • 所以我的问题是,当主机重启时,如何保存数据(redis容器中的计数器)?为什么在我的例子中,保存数据的唯一方法是使用docker命令stop停止容器

    你看到了吗

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


    听起来Redis没有刷新到磁盘。可以自定义此行为,请参阅以下容器文档:
    save 60 1000