I need to copy a few files into my docker container.. Should be easy
right? Turns out it’s not so trivial. In Docker 1.0.0 and earlier the
docker cp
command can be used to copy files from a container to the
host, but not the other way around…
Most of the time you can work around this by using an ADD
statement in
the Dockerfile but I often need to populate some data within data-only
volume containers before I start other containers that use the data. To
achieve copying data into the volume you can simply use tar
and pipe
the contents into the volume within a new container like so:\
[root@localhost ~]# docker run -d -i -t -v /volumes/wpdata --name wpdata mybusybox sh
416ea2a877267f566ef8b054a836e8b6b2550b347143c4fe8ed2616e11140226
[root@localhost ~]#
[root@localhost ~]# tar -c files/ | docker run -i --rm -w /volumes/wpdata/ --volumes-from wpdata mybusybox tar -xv
files/
files/file8.txt
files/file9.txt
files/file4.txt
files/file7.txt
files/file1.txt
files/file6.txt
files/file2.txt
files/file5.txt
files/file10.txt
files/file3.txt
So.. In the example I created a new data-only volume container named
wpdata and then ran tar
to pipe the contents of a directory to a new
container that also used the same volumes as the original container. Not
so tough, but not as easy as docker cp
. I think docker cp
should
have this functionality sometime in the future ( issue tracker
here ).
Enjoy
Dusty