What is the right way to add data to an existing n

2019-01-16 12:26发布

问题:

I was using Docker in the old way, with a volume container:

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

But now I changed to the new way by creating a named volume:

 docker volume create --name my-jenkins-volume 

I bound this new volume to a new Jenkins container. The only thing I've left is a folder in which I have the /var/jenkins_home of my previous jenkins container. (by using docker cp) Now I want to fill my new named volume with the content of that folder.

Can I just copy the content of that folder to /var/lib/jenkins/volume/my-jenkins-volume/_data?

回答1:

You can certainly copy data directly into /var/lib/docker/volumes/my-jenkins-volume/_data, but by doing this you are:

  • Relying on physical access to the docker host. This technique won't work if you're interacting with a remote docker api.

  • Relying on a particular aspect of the volume implementation would could change in the future, breaking any processes you have that rely on it.

I think you are better off relying on things you can accomplish using the docker api, via the command line client. The easiest solution is probably just to use a helper container, something like:

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


回答2:

You can reduce the accepted answer to one line using, e.g.

docker run --rm -v `pwd`:/src -v my-jenkins-volume:/data busybox cp -r /src /data


标签: docker