Docker教程-文件传输
Docker文件傳輸
簡介
本文介紹如何在宿主機和Docker容器之間進行文件傳輸,主要采用兩種方法,分別是cp拷貝方法和volume掛載方法兩種,后者為官方推薦方法之一,效率更高。
拷貝命令
docker cp 本地文件路徑 ID全稱:容器內文件路徑命令將主機文件拷貝到容器中,而docker cp 本地文件路徑 ID全稱:容器內文件路徑命令將容器內文件拷貝到主機中。
下面,具體介紹用法。
首先,創建一個容器,指定name(可以不指定,這里為了方便)。具體命令執行情況如下,容器創建運行后返回的長字符串就是容器ID全稱,也是cp命令需要使用的,但是隨著任務的處理,這個ID需要重新查詢。
通過執行docker ps -a可以查詢到容器的短Id和容器名稱,知道任意一個均可通過docker inspect -f '{{.Id}}' 短Id/容器名稱命令查詢該容器的完整長Id。
知道了完整Id,就可以使用本節開頭處提到的命令進行主機和容器間的文件傳輸,具體執行情況如下,已經進行了圖片備注。
同樣的,將容器內的文件傳輸到主機中,也是類似可行的。
掛載方式
這種方法相比于上面的方法效率更高,也是官方推薦的三種Docker文件管理方法之一,具體點擊鏈接查看即可。
普通卷
首先,創建一個Volume,指定名稱即可。創建的命令為docker volume create 名稱,查看創建的Volume信息命令為docker volume inspect 名稱,如下圖所示,其中Mountpoint這一項就是掛載點,也就是主機和容器進行文件傳輸的目錄。
在通過run命令啟動一個容器的時候可以通過-v選項將主機目錄掛載到容器中,此時主機的文件變動會影響容器內的對應目錄,反之,容器內指定目錄的文件變動也會影響主機。具體的命令為docker run -it --name test-container -v volume名稱:容器對應目錄 鏡像名 可執行文件,示例如下圖。有點需要特別注意,上面命令中的volume名稱也可以使用主機中的文件目錄,這樣可以創建一個指定位置的目錄來進行文件傳輸,而不用由docker指定。
數據卷
還有一種提到的很多的方法,就是使用數據卷容器來實現多個容器之間的數據共享,具體如下。
首先,創建一個數據卷容器名為dbdata并將其中的/db_data目錄作為Volume掛載目錄,具體命令為sudo docker run -it -v /db_data --name dbdata ubuntu,此處沒有指定volume名則系統會自動創建一個名稱隨機的volume用于掛載。
隨后,在啟動其他容器是,通過--volumes-from選項指定數據卷容器的名稱即可將該容器掛載的主機目錄頁掛載到當前容器的相同掛載目錄下,下圖演示這個過程。
其實,數據卷容器和普通卷方法是一致的,只是更方便指定那個volume而已,未必是必要的。
最后,上述提到的使用Volume進行數據傳輸都是要在創建容器時指定掛載的,那么是否也可以對運行中的容器動態添加掛載呢?
答案是可以的,這里也不多提,比較前者使用面較廣,想要具體了解,可以自行搜索。
補充說明
本文主要介紹cp和volume命令來進行宿主機與容器之間的文件傳輸,文章中若有疏漏,歡迎評論指正。
總結
以上是生活随笔為你收集整理的Docker教程-文件传输的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker教程-仓库管理
- 下一篇: YOLO目标检测算法