一尘不染

在Docker中将数据添加到现有命名卷的正确方法是什么?

docker

我以旧的方式使用Docker和卷容器:

docker run -d --name jenkins-data jenkins:tag echo "data-only container for Jenkins"

但是现在我通过创建命名卷更改为新方法:

 docker volume create --name my-jenkins-volume

我将此新卷绑定到新的Jenkins容器。我只剩下一个文件夹,其中有/var/jenkins_home我以前的jenkins容器的文件夹。(通过使用docker cp)现在,我要用该文件夹的内容填充新的命名卷。

我可以复制该文件夹的内容到/var/lib/jenkins/volume/my-jenkins-volume/_data吗?


阅读 376

收藏
2020-06-17

共1个答案

一尘不染

可以 数据无疑直接复制到/var/lib/docker/volumes/my-jenkins-volume/_data,但这样做你:

  • 依靠对Docker主机的物理访问。如果您正在与远程docker API进行交互,则此技术将无效。

  • 将来,依赖于卷实现的特定方面可能会发生变化,从而破坏您依赖它的任何流程。

我认为您最好依靠命令行客户端使用docker api可以完成的事情。最简单的解决方案可能只是使用一个辅助容器,例如:

docker run -v my-jenkins-volume:/data --name helper busybox true
docker cp . helper:/data
docker rm helper
2020-06-17