Docker卷还原

时间:2017-11-23 18:32:37

标签: docker containers docker-volume kitematic

我在docker中有一个gitlab容器。 今天我安装了Kitematic并开始试验。我选择了gitlab容器 - >设置 - >网络 - >按下'连接到主机网络'然后那个gitlab死了。更改此设置后,我注意到此容器的所有设置现在都已删除。我认为容器是重新创建的。我是对的吗?

我发现了一些未使用的卷。我希望其中一些卷包含我的实验和容器重新创建后丢失的数据。

如何更改现有容器上的卷,以及如何确定以前的gitlab图像实例正在使用哪些未使用的卷?以及如何将它们映射到相应的docker文件夹,例如' / etc / gitlab',' / var / log / gitlab',' / var / opt / gitlab'?也许我可以以某种方式浏览它们,它将帮助我理解基于文件结构的一切?

所有卷都在虚拟机内,并且没有映射到我的主机操作系统。

2 个答案:

答案 0 :(得分:1)

似乎要重新创建,是的。如果您运行的是run而不是start,这就是行为,但我不确定。

卷(一个例子):

docker run -v your-vm-path:/var/opt/gitlab gitlab:latest

您的数据应位于旧卷(本地虚拟机路径)中。如果没有,你就没有使用这些卷。

如果数据位于local-vm路径(vols)中,请参阅docker cp --help将数据放入容器或从容器中获取数据。

对于泊坞窗,您的主机就是您的虚拟机。

答案 1 :(得分:1)

gitlab docker文件声明了三个卷:

# Define data volumes
VOLUME ["/etc/gitlab", "/var/opt/gitlab", "/var/log/gitlab"]

因此,如果您在第一次启动时没有为它们命名,则docker将自动创建具有一些随机名称的卷。您可以检查每个卷并查看它实际包含的文件:

docker volume ls
docker volume inspect <volume-name>

在主机上找到Mountpoint,分析哪个卷映射到容器中的哪个目录。您可以通过

将其与新容器进行比较
docker exec -it <container-name> ls /var/opt/gitlab

确定哪个卷映射到哪个目录后,重新创建容器:

docker run <existing-volume1-name>:/etc/gitlab <existing-volume2-name>:/var/opt/gitlab ...