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

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

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

- 主機目錄不存在,并且以
/結(jié)尾
我們要將tomcat_muller的usr/local/tomcat/README.md文件復(fù)制到主機的study/test/路徑下,命令如下:
docker cp tomcat_muller:usr/local/tomcat/README.md ./test/
運行命令,結(jié)果如下圖,因為路徑不存在,所以會報錯,沒有這個目錄

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

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

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

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

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

總結(jié)
docker cp命令是在Docker容器和主機之間復(fù)制文件和目錄的便捷工具。通過簡單的命令和參數(shù),我們可以輕松地在容器和主機之間傳輸文件。本文介紹了docker cp命令的語法和常見選項,并提供了幾個示例以幫助大家更好地理解其用法。通過靈活使用docker cp命令,我們可以輕松地在Docker環(huán)境中進行文件操作和共享。
到此這篇關(guān)于Docker cp命令詳解之如何在Docker容器和主機之間復(fù)制文件/文件夾的文章就介紹到這了,更多相關(guān)Docker容器和主機復(fù)制文件/文件夾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何解決mysql配置文件錯誤導(dǎo)致在docker中無法啟動的問題
這篇文章主要介紹了如何解決mysql配置文件錯誤導(dǎo)致在docker中無法啟動的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
使用docker?compose一鍵部署WordPress博客的方法
這篇文章主要介紹了docker-compose一鍵部署WordPress博客,本文分步驟給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04
Docker綁定端口后仍無法遠(yuǎn)程直接訪問的解決方法
在Docker中,如果容器的端口綁定錯誤或只綁定到了容器的內(nèi)部IP地址,將導(dǎo)致外部主機無法訪問該端口,所以本文小編給大家介紹了Docker綁定端口后仍無法遠(yuǎn)程直接訪問的解決方法,需要的朋友可以參考下2024-09-09
docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說明
這篇文章主要介紹了docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
Docker安裝ElasticSearch和Kibana的問題及處理方法
這篇文章主要介紹了Docker安裝ElasticSearch和Kibana的問題及遇到問題解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02
詳解如何在 Docker 中設(shè)置 Go 并部署應(yīng)用
在本教程中,我們將學(xué)習(xí)如何使用 docker 部署 golang web 應(yīng)用程序。 具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03

