Docker?cp命令詳解之如何在Docker容器和主機(jī)之間復(fù)制文件/文件夾
簡(jiǎn)介
Docker是一種流行的容器化平臺(tái),它允許開發(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
命令會(huì)假定容器路徑相對(duì)于容器的 /(根)目錄,主機(jī)路徑則是相對(duì)于執(zhí)行 docker cp 命令的當(dāng)前目錄
options可用參數(shù)
-a
:將復(fù)制的文件或目錄保留其原始屬性,包括所有者、權(quán)限等。-L
:如果SRC_PATH是一個(gè)符號(hào)鏈接,則復(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)槁窂讲淮嬖冢詴?huì)報(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ù)制文件和目錄的便捷工具。通過簡(jiǎn)單的命令和參數(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker部署Zlm服務(wù)的實(shí)現(xiàn)
本文主要介紹了docker部署Zlm服務(wù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03如何解決mysql配置文件錯(cuò)誤導(dǎo)致在docker中無法啟動(dòng)的問題
這篇文章主要介紹了如何解決mysql配置文件錯(cuò)誤導(dǎo)致在docker中無法啟動(dòng)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01使用docker?compose一鍵部署WordPress博客的方法
這篇文章主要介紹了docker-compose一鍵部署WordPress博客,本文分步驟給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04Docker綁定端口后仍無法遠(yuǎn)程直接訪問的解決方法
在Docker中,如果容器的端口綁定錯(cuò)誤或只綁定到了容器的內(nèi)部IP地址,將導(dǎo)致外部主機(jī)無法訪問該端口,所以本文小編給大家介紹了Docker綁定端口后仍無法遠(yuǎn)程直接訪問的解決方法,需要的朋友可以參考下2024-09-09docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說明
這篇文章主要介紹了docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Docker安裝ElasticSearch和Kibana的問題及處理方法
這篇文章主要介紹了Docker安裝ElasticSearch和Kibana的問題及遇到問題解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02詳解如何在 Docker 中設(shè)置 Go 并部署應(yīng)用
在本教程中,我們將學(xué)習(xí)如何使用 docker 部署 golang web 應(yīng)用程序。 具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03一篇文章學(xué)會(huì)Docker命令小結(jié)
這篇文章主要介紹了一篇文章學(xué)會(huì)Docker命令小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07