作用
在容器和主機之間復制文件/文件夾
大白話說就是:
也就是容器中的文件和容器外的文件復制操作
語法格式
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/