docker容器與物理機之間拷貝文件的方法

  • 2019 年 10 月 5 日
  • 筆記

一般情況下,我們在啟動容器的時候可以使用-v參數映射宿主機的文件或者目錄到容器里,這樣的話,在宿主機相關目錄下的文件修改會自動在容器里生效。

但是,如果我們已經啟動了一個容器的話,就只能使用下面的這種方式在容器和宿主機之間拷貝文件了。

docker ps 獲取目標容器的ID或者容器的名稱    # 我這裡的是容器ID為52261df2fab6

docker inspect -f'“.`Id`' 容器的ID       # 獲取容器的ID全名稱

得到一串類似52261df2fab612b24b3502c4ad98c22aff70ce9fa641c5c9f735ac2415e92da3

cp /root/test.log /var/lib/docker/devicemapper/mnt/52261d…xxx/rootfs/root/   # 這樣就把宿主機的test.log拷貝到容器的/root/目錄下了。

# 說明:上面的這個方法在CentOS6.7通過yum安裝的docker-io測試通過。我另一台測試機安裝的是docker-engine,則根本沒有/rootfs/這個目錄。

最後,還有1個方法,就是在容器裡面安裝openssh-server和openssh-clients,然後通過scp的方式進行文件拷貝操作。但是docker官方不建議給docker使用ssh連接的方式去管理。