实际上,我是这样运行我的容器的,例如:
docker run -v /nexus-data:/nexus-data sonatype/nexus3
^
在阅读文档后,我发现完全由docker管理的卷。出于某些原因,我想改变运行容器的方式,做一些类似这样的事情:
docker run -v nexus-data:/nexus-data sonatype/nexus3
^
我想将现有的绑定挂载转移到卷。
但我不想丢失的数据到/nexus-data
文件夹,有没有可能转移这个文件夹,到新的卷,whitout重新启动一切?因为我也有Jenkins和Sonar容器,所以我只想改变拥有持久化数据的方式。这是一个正确的方法来做这件事吗?
2条答案
按热度按时间yc0p9oo01#
您可以尝试以下步骤,这样您就不会丢失当前的连接数据。
docker copy会将数据从主机的/nexus-data文件夹复制到容器的FS /nexus-data文件夹,这是您挂载的卷。
如果您在执行以下步骤时遇到任何问题,请告诉我。
编辑:将“docker copy”更改为“docker cp”
ffscu2ro2#
这里有另一种方法,我刚刚成功地使用了一个Heimdall容器。它在sonatype/nexus 3镜像的文档中概述:
1.停止运行的容器(例如名为
nexus3
)1.创建一个名为
nexus-data
的docker卷,使用以下命令创建它:docker volume create nexus-data
)1.默认情况下,Docker将卷的内容存储在
/var/lib/docker/volumes/nexus-data/_data/
1.只需将您之前使用绑定挂载的目录复制到上述卷目录(您需要超级用户权限才能执行此操作,或者用户必须是
docker
组的一部分):cp -R /path/to/nexus-data/* /var/lib/docker/volumes/nexus-data/_data/
1.使用
$ docker run -v nexus-data:/nexus-data sonatype/nexus3 --name=nexus3
重新启动nexus3
容器1.您的容器将备份并运行,其中保存在目录
/path/to/nexus-data/
中的文件现在已镜像到docker卷中。当然,要检查功能是否相同,如果相同,则可以删除/path/to/nexus-data/
目录Q.E. D