0

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

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

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

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

4

2 回答 2

1

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

卷(一个例子):

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

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

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

对于 docker,您的主机就是您的虚拟机。

于 2017-11-23T18:41:15.833 回答
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 ...
于 2017-11-23T19:06:44.027 回答