docker - 将 docker bind-mount 移动到卷

标签 docker volumes

实际上,我像这样运行我的容器,例如:

docker run -v /nexus-data:/nexus-data sonatype/nexus3
              ^

阅读文档后,我发现卷完全由 docker 管理。出于某些原因,我想改变运行容器的方式,做这样的事情:
docker run -v nexus-data:/nexus-data sonatype/nexus3
              ^

我想将现有的绑定(bind)安装转移到卷。

但我不想将数据丢失到 /nexus-data文件夹,是否有可能将此文件夹转移到新卷,而无需重新启动所有内容?例如,因为我也有 Jenkins 和 Sonar 容器,所以我只想改变拥有持久数据的方式。这是一个正确的方法吗?

最佳答案

您可以尝试以下步骤,以免丢失当前的关联数据。

#>docker run -v nexus-data:/nexus-data sonatype/nexus3
#>docker copy /nexus-data/. <container-name-or-id>:/nexus-data/
#>docker stop <container-name-or-id>
#>docker start <container-name-or-id>
docker copy 会将数据从主机的/nexus-data 文件夹复制到容器的 FS/nexus-data 文件夹,这是您安装的卷。
如果您在执行以下步骤时遇到任何问题,请告诉我。

关于docker - 将 docker bind-mount 移动到卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49888014/

相关文章:

内核级别的 Docker 命名空间

多个容器之间的 Docker 命名卷

data-storage - 什么是数据量?

docker run...进入容器...然后每个命令都会得到 "ReferenceError: <command> is not defined"

docker exec 无法在 docker-compose 容器中工作

docker - 如何在本地安装引用为 github.com 地址的 Golang 包

docker - Docker 中的 Dropbox

docker - 如何在带有很多引号的Windows Docker容器中执行WMI查询?

mysql - 如何在外部磁盘(mac os)上存储带有mysql数据的命名docker卷?

ubuntu - Docker - 无法在现有文件上挂载卷,文件存在