Docker學習(十五)- docker cp 命令詳解

作用

在容器和主機之間複製文件/文件夾
大白話說就是:
也就是容器中的文件和容器外的文件複製操作

語法格式

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

重點

  • 容器 container 可以是正在運行或已停止的容器
  • SRC_PATH 或 DEST_PATH可以是文件或目錄
  • 該命令會假定容器路徑相對於容器的 /(根)目錄
  • 而主機路徑則是相對於執行 docker cp 命令的當前目錄

options 說明

-a 存檔模式(複製所有uid / gid信息)
-L 保持源目標中的鏈接

備註:暫時沒發現這兩個 options 有啥用

SRC_PATH 和 DEST_PATH 的講解

SRC_PATH 指定一個文件

若 DEST_PATH 不存在
創建 DEST_PATH 所需的文件夾,文件正常保存到 DEST_PATH 中

若 DEST_PATH 不存在,並以 / 結尾
錯誤:目標目錄必須存在

若 DEST_PATH 存在並且是一個文件
目標被源文件的內容覆蓋

若 DEST_PATH 存在並且是目錄
使用 SRC_PATH 中的基本名稱將文件複製到此目錄中

SRC_PATH指定目錄

若 DEST_PATH 不存在
將 DEST_PATH 創建爲目錄,並將源目錄的內容複製到該目錄中

若 DEST_PATH存在並且是一個文件
錯誤:無法將目錄複製到文件

若 DEST_PATH存在並且是目錄
SRC_PATH 不以 /. 結尾,源目錄複製到此目錄
SRC_PATH 以 /. 結尾,源目錄的內容被複制到該目錄中

實際栗子

從容器複製文件到主機

已存在的目錄

docker cp tomcat:usr/local/tomcat/README.md ./

不存在的目錄

docker cp tomcat:usr/local/tomcat/README.md  demo/

已存在的文件

docker cp tomcat:usr/local/tomcat/README.md  test.txt

相當於,把複製的文件寫入到指定文件中,如主機已存在該文件,直接覆蓋原來內容寫入。

從主機複製文件到容器

docker cp demo.txt  tomcat:/

從主機複製目錄到容器

目標目錄(容器不存在這個目錄)不存在。會自動創建

docker cp demo  tomcat:/

目標是一個文件
意思你想把文件家複製到容器中的文件下(這肯定是不行的)

docker cp demo  tomcat:demo.txt/

目標目錄已存在
主機目錄下存在文件,拷貝到容器中,容器裏也有這個文件夾

docker cp demo  tomcat:demo/

從容器複製目錄到主機
就是把容器的目錄或文件複製到主機上

docker cp tomcat:/movefile /usr/local/

原文鏈接:
https://www.cnblogs.com/poloyy/p/13926291.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章