首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否可以导出一个包含数据和所有内容的容器,以便在另一台计算机上生成完整的副本?

我是否可以导出一个包含数据和所有内容的容器,以便在另一台计算机上生成完整的副本?
EN

Stack Overflow用户
提问于 2017-01-04 17:50:52
回答 1查看 360关注 0票数 1

我正在研究Docker,并试图理解它,所以我可能误解了这个概念。

我已经安装了sebp/elk (ElasticSearch-Logstash-Kibana),并且运行了一个可用的容器。我已经设置了一些索引,并将一些数据发送到logstash,它与容器一起存储。如果我重新启动容器,一切都会正常工作。现在我有兴趣按原样导出容器,以便使用我设置的配置和数据在另一台计算机上启动。

因此,我尝试了export容器,并将其作为新镜像进行import,然后从新镜像中run容器。容器可以工作,但它作为一个新的容器启动,没有我放入原始容器中的所有数据。

我还尝试commit我对图像所做的更改,然后save图像,再次load它,然后从新图像run容器。这也是可行的,但同样没有任何数据。

因此,当我对原始容器执行inspect操作时,可以看到它有一个挂载的卷,因此我认为应该尝试将elasticsearch数据导出到.tar文件,然后导入到新的容器中。但这也不管用。

这是对原容器的挂载检查:

代码语言:javascript
复制
"Mounts": [
        {
            "Name": "fe17e920f9d17e177ac899b1617a8c51231c8a3b34007f463d082e5be2677412",
            "Source": "/var/lib/docker/volumes/fe17e920f9d17e177ac899b1617a8c51231c8a3b34007f463d082e5be2677412/_data",
            "Destination": "/var/lib/elasticsearch",
            "Driver": "local",
            "Mode": "",
            "RW": true,
            "Propagation": ""
        }
    ]

下面是我尝试导出它的方法:

代码语言:javascript
复制
docker run --rm --volumes-from elk -v $(pwd):/volumes original/sebp/elk:exported tar cvf /volumes/elk-volume.tar /var/lib/elasticsearch

..。下面是我尝试导入它的方法:

代码语言:javascript
复制
docker run --rm --volumes-from elk-imported -v $(pwd):/volumes original/sebp/elk:exported bash -c "cd /volumes && tar xvf /volumes/elk-volume.tar --strip 1"

有没有可能导出一个Docker容器,以获得包含数据和所有内容的精确副本,或者我处理这个问题的方式是错误的?

EN

回答 1

Stack Overflow用户

发布于 2017-01-04 18:11:33

您的方法是正确的,docker export命令不会导出与容器关联的卷的内容,因此您必须导出容器而不是备份卷数据。

在执行卷恢复之前,请确保您已经运行了elk-imported容器。

代码语言:javascript
复制
docker run -v /volumes --name elk-imported  original/sebp/elk:exported /bin/bash
docker run --rm --volumes-from elk-imported -v $(pwd):/volumes original/sebp/elk:exported bash -c "cd /volumes && tar xvf /volumes/elk-volume.tar --strip 1"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41460776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档