Docker卷恢复

我在Docker中有一个gitlab容器。 今天我安装了Kitematic,并开始试验。 我select了gitlab容器 – >设置 – >networking – >按下“连接到主机networking”,之后,gitlab死了。 改变这个设置后,我已经注意到所有的设置现在都放弃了这个容器。 我认为这个容器是重新创build的 我对吗?

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

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

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

gitlab docker文件声明了三个卷:

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

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

 docker volume ls docker volume inspect <volume-name> 

在主机上findMountpoint ,分析哪个卷映射到容器中的哪个目录。 你可以比较一个新的容器

 docker exec -it <container-name> ls /var/opt/gitlab 

一旦找出哪个卷映射到哪个目录,重新创build容器,如下所示:

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

似乎被重新创build,是的。 如果你run而不是start这是行为,但我不知道。

卷(一个例子):

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

您的数据应该在您的旧卷(本地虚拟path)中。 如果没有,你没有使用这些卷。

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

对于docker工人来说,你的主机就是你的虚拟机。