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工人来说,你的主机就是你的虚拟机。