Docker容器重启,没有数据丢失

我正在使用Rancher作为编排工具。 我有一个单独的节点Cassandra安装在容器中,并希望重新启动它,因为我最近对configuration文件( cassandra.yaml )进行了一些更改。 数据库中已经有数据,所以想防止数据丢失。 我使用usman/docker-rancher-cassandra:3.1图像。 应该使用哪个命令来做到这一点?

重新启动容器不会影响容器中的数据。 如果您尝试使用新映像重新创build容器,则可能会丢失数据。

如果您正在使用卷,则您的数据将保留在主机中。 这取决于你是如何开始你的容器。 您可以从docker inspect <container_name>音量信息。

通过使用您正在使用的dockerfile ,cassandra数据目录是一个卷。

 VOLUME /var/lib/cassandra 

如果你使用明确地安装你的容器卷

 docker run -d -v <HOST_PATH>:/var/lib/cassandra usman/docker-rancher-cassandra:3.1 

然后你可以用新版本升级容器。 否则,您需要在重新创build容器之前从目录复制数据。

警告1:

从现有容器的卷启动另一个容器。

 docker stop cassandra docker run -it --volumes-from cassandra \ --name="cassandra-new" \ usman/docker-rancher-cassandra:3.1 

如果一切正常,删除以前的容器并重命名容器

 docker rm cassandra docker rename cassandra-new cassandra 

解决scheme2:

您可以将/var/lib/docker/volumes/531419fb27d1dff9c5371769edc08d6160f71061c9fe3af05309a3a0c51bb84d/_data的数据复制到其他目录,然后重新创build容器。 您需要在启动新容器时使用该目录

docker run -v <HOST_PATH>:/var/lib/cassandra