Docker实践7:容器与主机拷贝数据
在Docker实践2 中使用-v参数将主机与容器中相关目录联系在一起(挂载),所以我们可以用这个通道将想要互相拷贝的数据放入其中,这样就可以用cp命令来复制文件了。
除了这个办法,我们还可以分别用不同的命令来拷贝数据。
从容器中向主机拷贝数据
Docker 提供了cp命令,用法如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a77a72ac178c tutum/apache-php:latest "/run.sh" 21 hours ago Up 21 hours 0 .0 .0 .0 :8080 ->80 /tcp phpapache_phpapache_1
root@a77a72ac178c :~
index .php logo.png
root@a77a72ac178c :~
logout
app download index .html
index .php logo.png
从主机向容器中拷贝数据
这里要使用一个docker提供的神奇通道来完成主机向容器的数据传输。 首先要用docker inspect方法获得容器的完整id,
inspect Return low-level information on a container
然后用/var/lib/docker/aufs/mnt/通道来完成拷贝。 举例如下:
# docker inspect -f '{{.Id}}' a77a72ac178c
a77a72ac178c1e35708d2af446197c10239b0b1bd8932104578e334b83eb93a2
# cp docker/docker-start.sh /var/lib/docker/aufs/mnt/a77a72ac178c1e35708d2af446197c10239b0b1bd8932104578e334b83eb93a2/root/
# docker-enter a77a72ac178c
# pwd
/root
# ls
docker-start.sh