开源将军 发表于 2016-06-30 01:33

如何让docer主机与容器互相拷贝数据

如何让Docker与寄主主机互换数据,这是个入门问题
在Docker实践2中使用-v参数将主机与容器中相关目录联系在一起(挂载),所以我们可以用这个通道将想要互相拷贝的数据放入其中,这样就可以用cp命令来复制文件了。
  除了这个办法,我们还可以分别用不同的命令来拷贝数据。
从容器中像主机拷贝数据
  docker提供了cp命令,用法如下:

# docker ps
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
# docker-enter a77a72ac178c
root@a77a72ac178c:~# ls /var/www/html
index.phplogo.png
root@a77a72ac178c:~# exit
logout
# docker cp a77a72ac178c:/var/www/html /var/www/
# ls /var/www/
appdownloadindex.html
# ls /var/www/app/
index.phplogo.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

开源将军 发表于 2016-06-30 02:17

自己先做下沙发
页: [1]
查看完整版本: 如何让docer主机与容器互相拷贝数据