elasticsearch,Docker,elasticsearch" /> elasticsearch,Docker,elasticsearch" />

docker克隆现有elasticsearch容器

docker克隆现有elasticsearch容器,docker,elasticsearch,Docker,elasticsearch,所以目前,我有一个在一台服务器上运行Elasticsearch的现有容器。我要做的是克隆容器(包括现有数据)并将其放在另一台服务器中 这可能吗?我对Docker还是一个新手,我很困惑这是否是正确的方法。Elasticsearch文档中有一些,特别是一条警告。希望你已经做到了 这里的重要细节(这在Docker中很常见)是容器本身是不相关的,只要我们能够保留底层数据。我们希望将数据移动到另一个系统,然后我们可以基于该数据启动一个新的容器 如果您正在使用Docker进行Elasticsearch存储,

所以目前,我有一个在一台服务器上运行Elasticsearch的现有容器。我要做的是克隆容器(包括现有数据)并将其放在另一台服务器中


这可能吗?我对Docker还是一个新手,我很困惑这是否是正确的方法。

Elasticsearch文档中有一些,特别是一条警告。希望你已经做到了

这里的重要细节(这在Docker中很常见)是容器本身是不相关的,只要我们能够保留底层数据。我们希望将数据移动到另一个系统,然后我们可以基于该数据启动一个新的容器

如果您正在使用Docker进行Elasticsearch存储,则需要按照Docker文档中的步骤进行操作。如果使用Docker Compose启动Elasticsearch,可以使用运行备份命令:

docker compose run-v$PWD:/export-w/usr/share/elasticsearch/data es01\
tar cvzf/export/es01.tar.gz。
scp docker-compose.yml es01.tar.gz在那里:
嘘
docker compose run-v$PWD:/export-w/usr/share/elasticsearch/data es01\
tar xvzf/export/es01.tar.gz
docker compose up-d
如果您选择了一个,只需
scp-r
将数据目录从您的主机发送到另一个系统就足够了

链接到docker commit的要点。这几乎从来都不是一个最佳实践,因为它创建的是你以后无法复制的一次性图像。(如果以后需要升级Elasticsearch,则不需要启动旧服务器、启动ES并再次提交。)在此特定上下文中,
Elasticsearch
映像配置为始终将其数据存储在卷中(如果未另行指定,则为匿名卷)而且无论是
docker commit
还是
docker build
都不会保留卷内容


同样在Elasticsearch的特定上下文中,如果您可以配置新旧节点以连接到一个集群中,那么您可以让ES的普通复制来处理这个问题。(启动新节点,确保所有索引都配置了至少两个副本,等待群集变为绿色,然后终止旧节点。)但是,如果您还没有进行此设置,只需如上所述克隆数据卷就会容易得多。

感谢您提供详细的答案,但是我检查了容器,它根本没有使用卷。我设法对/usr/share/elasticsearch/data中的数据进行了备份,是否应该将其复制到新容器中?是的。(并确保在那里装载某种类型的卷,否则您可能会在需要重新启动容器时立即丢失数据。)我已成功将备份的数据复制到新容器中,但在获取节点锁时出错。