docker容器的文件拷貝方式小結(jié)
一、已運(yùn)行的容器拷貝方式
使用 docker cp
命令將文件從物理機(jī)復(fù)制到運(yùn)行中的 Docker 容器中,或者從 Docker 容器中復(fù)制文件到物理機(jī)上。
例如,要將物理機(jī)上的文件 test.txt
復(fù)制到名為 mycontainer
的容器 /app
目錄中,可以使用以下命令:
從主機(jī)拷貝文件到容器中:
docker cp test.txt mycontainer:/app/test.txt
其中,test.txt
是要復(fù)制的本地文件,mycontainer
是容器的名稱,/app/test.txt
是容器的文件路徑。
如果要將 Docker 容器中的文件復(fù)制到物理機(jī)上,可以使用以下命令:
從容器中拷貝文件到主機(jī)中:
docker cp mycontainer:/app/test.txt test.txt
這條命令實(shí)現(xiàn)了將容器 mycontainer
中的 /app/test.txt
文件復(fù)制到本地目錄下的 test.txt
文件中。
需要注意的是,docker cp
命令需要在 Docker 版本 1.8 或更高版本中才能使用。另外,在使用時(shí)需要確保對(duì)要復(fù)制的文件擁有足夠的讀寫權(quán)限。
二、構(gòu)建dockerfile時(shí)拷貝
Dockerfile 中可以直接使用 COPY
或 ADD
指令將本地文件復(fù)制到鏡像中,原理是 Docker 在構(gòu)建鏡像時(shí),會(huì)先將本地文件復(fù)制到一個(gè)臨時(shí)目錄中,然后再將該目錄添加到鏡像的文件系統(tǒng)中。
當(dāng)使用 COPY
或 ADD
指令時(shí),Docker 構(gòu)建引擎會(huì)根據(jù)指定的源路徑從構(gòu)建上下文中查找相應(yīng)的文件或目錄,并將其復(fù)制到鏡像中的目標(biāo)路徑中。如果源路徑是一個(gè)目錄,則目標(biāo)路徑必須以 /
結(jié)尾,否則會(huì)導(dǎo)致 COPY 或 ADD 操作失敗。
例如,在下面的 Dockerfile 中:
FROM nginx:latest COPY index.html /usr/share/nginx/html/ ADD static.tar.gz /usr/share/nginx/html/
這個(gè) Dockerfile 指定了 nginx:latest
作為基礎(chǔ)鏡像,然后將本地目錄中的 index.html
文件復(fù)制到鏡像中的 /usr/share/nginx/html/
目錄中。在構(gòu)建鏡像時(shí),Docker 構(gòu)建引擎會(huì)先將 index.html
復(fù)制到一個(gè)臨時(shí)目錄中,然后再將該目錄添加到鏡像的文件系統(tǒng)中,以此來實(shí)現(xiàn)將文件從本地復(fù)制到鏡像中。
因此,直接在 Dockerfile 中使用 COPY
或 ADD
指令來將本地文件復(fù)制到容器中是可行的。而且,這樣做還可以自動(dòng)化地將文件復(fù)制到鏡像中,使得在創(chuàng)建新容器時(shí)可以直接使用該鏡像,并且不需要再手動(dòng)復(fù)制文件。
附:Docker容器與本地文件相互拷貝
Docker容器中的文件可以與本地進(jìn)行共享。
1、Docker容器中的文件拷貝至本地
#格式 #docker cp CONTAINER ID:容器目錄 本地目錄 #示例 docker ps -a #查看本地容器ID sudo docker cp 52ea915e6527:/aha /home/aha2復(fù)制
2、本地文件拷貝至容器
#格式 #docker cp 本地路徑 CONTAINER ID:容器目錄 #示例 docker cp license.dat 52ea915e6527:/home
注意:
1、此命令是在容器外使用(shell或cmd)。
2、兩個(gè)命令中容器 ID可以與容器name相互替換使用。
如下圖所示,CONTAINER ID和NAMES 都可以在命令中使用。
總結(jié)
到此這篇關(guān)于docker容器的文件拷貝方式的文章就介紹到這了,更多相關(guān)docker容器文件拷貝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker部署Mysql數(shù)據(jù)庫(kù)步驟詳解
Docker是一種流行的容器化平臺(tái),可以簡(jiǎn)化應(yīng)用程序的部署和管理,在本博客中,我們將探討如何使用Docker部署兩個(gè)廣泛使用的數(shù)據(jù)庫(kù):MySQL,我們將提供詳細(xì)的步驟和相應(yīng)的命令,以幫助您輕松地在Docker容器中設(shè)置和運(yùn)行這個(gè)數(shù)據(jù)庫(kù)2023-07-07docker容器下配置jupyter notebook的操作
這篇文章主要介紹了docker容器下配置jupyter notebook的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03在CentOS 7 上為docker配置端口轉(zhuǎn)發(fā)以兼容firewall的解決方法
這篇文章主要介紹了在CentOS 7 上為docker配置端口轉(zhuǎn)發(fā)以兼容firewall的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07docker下遷移elasticsearch問題以及解決方案
文章描述了如何將Elasticsearch數(shù)據(jù)從一個(gè)服務(wù)器遷移到另一個(gè)服務(wù)器,包括數(shù)據(jù)掛載、版本一致性、啟動(dòng)命令的匹配以及可能遇到的權(quán)限和節(jié)點(diǎn)故障問題的解決方法2024-11-11docker daemon遠(yuǎn)程連接設(shè)置詳解
本篇文章主要介紹了docker daemon遠(yuǎn)程連接設(shè)置詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04Rabbitmq heartbea心跳檢測(cè)機(jī)制原理解析
這篇文章主要介紹了Rabbitmq heartbea心跳檢測(cè)機(jī)制原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11docker初識(shí)之五分鐘認(rèn)識(shí)docker
Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。通過本文學(xué)習(xí)可以快速了解docker,本文介紹的非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-10-10