Docker容器重启而不会丢失数据

问题描述 投票:4回答:1

我使用Rancher作为编排工具。我有一个节点Cassandra安装在一个容器中,并希望重新启动它,因为我最近在配置文件(cassandra.yaml)中做了一些更改。数据库中已存在数据,因此希望防止数据丢失。我使用usman/docker-rancher-cassandra:3.1图像。应该使用哪个命令来执行此操作?

docker cassandra rancher
1个回答
9
投票

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

如果您使用的是卷,则您的数据将保留在主机中。这取决于你是如何开始容器的。您可以查看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 

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

解决方案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

解决方案2:

docker检查以获取音量路径。

docker inspect <container_name>

在重新创建容器之前,您可以将数据从/var/lib/docker/volumes/531419fb27d1dff9c5371769edc08d6160f71061c9fe3af05309a3a0c51bb84d/_data复制到其他目录。您需要在使用时启动新容器时挂载该目录

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

© www.soinside.com 2019 - 2024. All rights reserved.