Docker?cp命令詳解之如何在Docker容器和主機(jī)之間復(fù)制文件/文件夾

簡介
Docker是一種流行的容器化平臺,它允許開發(fā)人員在獨(dú)立、可移植的環(huán)境中構(gòu)建、打包和部署應(yīng)用程序。在使用Docker時(shí),常常需要在Docker容器和主機(jī)之間進(jìn)行文件的復(fù)制和共享。Docker提供了一個(gè)名為docker cp的命令,可以輕松地在容器和主機(jī)之間復(fù)制文件和目錄。本文將詳細(xì)介紹docker cp命令的使用方法和常見示例。
docker cp命令
docker cp命令是Docker提供的一個(gè)用于在主機(jī)和容器之間復(fù)制文件和目錄的命令。它的語法如下:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
CONTAINER,可以是正在運(yùn)行或已停止的容器,名稱或ID均可SRC_PATH,源文件或目錄在容器內(nèi)的路徑DEST_PATH,目標(biāo)路徑在主機(jī)上的位置
注:docker cp命令會假定容器路徑相對于容器的 /(根)目錄,主機(jī)路徑則是相對于執(zhí)行 docker cp 命令的當(dāng)前目錄
options可用參數(shù)
-a:將復(fù)制的文件或目錄保留其原始屬性,包括所有者、權(quán)限等。-L:如果SRC_PATH是一個(gè)符號鏈接,則復(fù)制鏈接指向的文件或目錄。-p:保留源文件或目錄的時(shí)間戳。-R或-r:遞歸復(fù)制整個(gè)目錄。
SRC_PATH & DEST_PATH
SRC_PATH和DEST_PATH是docker cp命令關(guān)鍵的部分,路徑是否正確關(guān)系到命令能否運(yùn)行成功,下面我們來分析這兩個(gè)路徑的各種情況,并說明各種情況下是否能成功復(fù)制。
SRC_PATH 指定一個(gè)文件時(shí)
- 當(dāng)
DEST_PATH不存在
創(chuàng)建 DEST_PATH 所需的文件夾,文件正常保存到 DEST_PATH 中
- 當(dāng)
DEST_PATH不存在,并以 / 結(jié)尾
命令將報(bào)錯(cuò),目標(biāo)目錄必須存在
- 當(dāng)
DEST_PATH存在并且是一個(gè)文件
目標(biāo)被源文件的內(nèi)容覆蓋
- 當(dāng)
DEST_PATH存在并且是目錄
使用 SRC_PATH 中的基本名稱將文件復(fù)制到此目錄中
SRC_PATH指定目錄
- 當(dāng)
DEST_PATH存在并且是目錄時(shí),復(fù)制將正常復(fù)制
- SRC_PATH 不以 /. 結(jié)尾,源目錄復(fù)制到此目錄
- SRC_PATH 以 /. 結(jié)尾,源目錄的內(nèi)容被復(fù)制到該目錄中
當(dāng)
DEST_PATH存在并且是一個(gè)文件時(shí),復(fù)制將報(bào)錯(cuò),因?yàn)闊o法將目錄復(fù)制到文件中當(dāng)
DEST_PATH不存在時(shí),將新創(chuàng)建DEST_PATH為路徑的目錄,并將源目錄的內(nèi)容復(fù)制到該目錄中
使用示例
從容器復(fù)制文件到主機(jī)
- 主機(jī)目錄已存在
我們要將tomcat_muller的usr/local/tomcat/README.md文件復(fù)制到主機(jī)的study目錄下,命令如下:
docker cp tomcat_muller:usr/local/tomcat/README.md ./
運(yùn)行命令,結(jié)果如下圖,成功復(fù)制到指定目錄下:

- 主機(jī)目錄不存在,不以
/結(jié)尾
我們要將tomcat_muller的usr/local/tomcat/README.md文件復(fù)制到主機(jī)的study/test目錄下,命令如下:
docker cp tomcat_muller:usr/local/tomcat/README.md ./test
運(yùn)行命令,結(jié)果如下圖,我們成功在study目錄下創(chuàng)建了test目錄,并且文件成功復(fù)制到了指定目錄下

- 主機(jī)目錄不存在,并且以
/結(jié)尾
我們要將tomcat_muller的usr/local/tomcat/README.md文件復(fù)制到主機(jī)的study/test/路徑下,命令如下:
docker cp tomcat_muller:usr/local/tomcat/README.md ./test/
運(yùn)行命令,結(jié)果如下圖,因?yàn)槁窂讲淮嬖冢詴?bào)錯(cuò),沒有這個(gè)目錄

- 復(fù)制到已經(jīng)存在的文件中
docker cp tomcat_muller:usr/local/tomcat/README.md test.txt
運(yùn)行命令,結(jié)果如下:

復(fù)制目錄的操作與復(fù)制文件的類似,這里不做贅述。
從主機(jī)復(fù)制文件到容器
我們要將主機(jī)study下的test.txt文件復(fù)制到容器中,命令如下:
docker cp test.txt tomcat_muller:/
運(yùn)行命令,結(jié)果如下圖:

從主機(jī)復(fù)制目錄到容器
- 目標(biāo)目錄不存在
我們要將主機(jī)的study/hogwarts目錄復(fù)制到容器的test目錄中,命令如下:
docker cp hogwarts tomcat_muller:test/
運(yùn)行命令,結(jié)果如下圖:

- 目標(biāo)目錄為一個(gè)文件
我們要將主機(jī)的study/hogwarts目錄復(fù)制到容器的muller中,命令如下:
docker cp hogwarts tomcat_muller:muller/
- 目錄已存在
我們要將主機(jī)的study/hogwarts目錄復(fù)制到容器的/hogwarts中,命令如下:
docker cp hogwarts tomcat_muller:/hogwarts/
運(yùn)行命令結(jié)果如下:

從容器復(fù)制目錄到主機(jī)
我們將tomcat_muller容器中的webapps.dist目錄復(fù)制到主機(jī)的usr/local/study中,命令如下:
docker cp tomcat_muller:/usr/local/tomcat/webapps.dist /home/muller/study
運(yùn)行命令,結(jié)果如下圖:

總結(jié)
docker cp命令是在Docker容器和主機(jī)之間復(fù)制文件和目錄的便捷工具。通過簡單的命令和參數(shù),我們可以輕松地在容器和主機(jī)之間傳輸文件。本文介紹了docker cp命令的語法和常見選項(xiàng),并提供了幾個(gè)示例以幫助大家更好地理解其用法。通過靈活使用docker cp命令,我們可以輕松地在Docker環(huán)境中進(jìn)行文件操作和共享。
到此這篇關(guān)于Docker cp命令詳解之如何在Docker容器和主機(jī)之間復(fù)制文件/文件夾的文章就介紹到這了,更多相關(guān)Docker容器和主機(jī)復(fù)制文件/文件夾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker搭建NetBox的實(shí)現(xiàn)示例
NetBox是一個(gè)開源的數(shù)據(jù)中心基礎(chǔ)設(shè)施管理和IP地址管理平臺,本文主要介紹了Docker搭建NetBox的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
CentOS Stream 9 服務(wù)器 Docker 部署
本文詳細(xì)記錄了使用Docker部署KaiwuDB的過程,并包括模數(shù)據(jù)庫支持序表與關(guān)系表跨模查詢實(shí)戰(zhàn),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2026-06-06
如何解決docker鏡像在不同cpu架構(gòu)上運(yùn)行容器報(bào)錯(cuò)問題
文章主要介紹了如何查看本地Docker鏡像的CPU架構(gòu)類型,并提供了解決x86鏡像無法在ARM CPU上運(yùn)行的問題的方法,通過在Dockerfile中使用`--platform`參數(shù)指定CPU架構(gòu),可以在構(gòu)建鏡像時(shí)選擇正確的版本,從而解決架構(gòu)不匹配的問題2024-12-12
解決docker run hello-world遇到錯(cuò)誤消息-error during&n
這篇文章主要介紹了解決docker run hello-world遇到錯(cuò)誤消息-error during conne問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
docker 中的–mount 和-v 參數(shù)區(qū)別解析
這篇文章主要介紹了docker 中的–mount 和-v 參數(shù)區(qū)別解析,--mount 更為靈活,適用于更復(fù)雜的掛載需求,使用哪種方式主要取決于個(gè)人或團(tuán)隊(duì)的偏好和具體的使用場景,需要的朋友可以參考下2023-12-12
解決docker run 或者 docker restart 啟動鏡像就自動退出
這篇文章主要介紹了解決docker run 或者 docker restart 啟動鏡像就自動退出的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
docker 安裝TDengine 時(shí)序數(shù)據(jù)庫的技術(shù)指南
TDengine是一個(gè)高性能、分布式a的時(shí)序數(shù)據(jù)庫,專為物聯(lián)網(wǎng)(loT)和大數(shù)據(jù)分析日設(shè)計(jì),下面給大家分享docker 安裝TDengine 時(shí)序數(shù)據(jù)庫的技術(shù)指南,感興趣的朋友一起看看吧2025-04-04

