我可以导出一个容器与数据和一切在另一台计算机上产生一个完整的副本?
我正在考虑Docker,并试图围绕它,所以我可能误解了这个概念。
我已经安装了sebp / elk (ElasticSearch-Logstash-Kibana)并运行了一个工作容器。 我已经设置了一些索引,并将一些数据发布到与容器一起存储的logstash中。 如果我重新启动容器,一切都按预期工作。 现在我有兴趣导出容器,在另一台计算机上启动configuration和数据。
所以我试图export
容器并将其作为新图像import
并从新图像run
容器。 该容器工作,但它启动为一个新的容器,没有所有的数据,我把它放在原来的容器。
我也尝试将更改commit
到图像,然后save
图像并重新load
,然后从新图像run
容器。 这也有用,但是又没有任何数据。
所以当我inspect
原始容器时,我可以看到它有一个装入的卷,所以我想我应该尝试将elasticsearch数据导出到一个.tar文件,然后导入到新的容器中。 但是那也行不通。
这是原始容器的安装检查:
"Mounts": [ { "Name": "fe17e920f9d17e177ac899b1617a8c51231c8a3b34007f463d082e5be2677412", "Source": "/var/lib/docker/volumes/fe17e920f9d17e177ac899b1617a8c51231c8a3b34007f463d082e5be2677412/_data", "Destination": "/var/lib/elasticsearch", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ]
以下是我试图导出它的方法:
docker run --rm --volumes-from elk -v $(pwd):/volumes original/sebp/elk:exported tar cvf /volumes/elk-volume.tar /var/lib/elasticsearch
…这是我试图导入它:
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容器来获取它的数据和一切的确切副本,或者我是以错误的方式接近这个问题?
您的方法是正确的,docker export命令不会导出与容器关联的卷的内容,因此您必须导出容器而不是备份卷数据。
在进行卷还原之前,请确保已经运行了elk导入的容器。
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"