在[Docker實踐2](http://blog.csdn.net/lincyang/article/details/43450999 "docker practice2")中使用-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.php logo.png
root@a77a72ac178c:~# exit
logout
# docker cp a77a72ac178c:/var/www/html /var/www/
# ls /var/www/
app download index.html
# ls /var/www/app/
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
~~~