欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

從Docker容器復(fù)制文件到主機的四種方法

 更新時間:2025年06月16日 10:37:14   作者:1010n111  
在使用Docker進行開發(fā)和部署時,有時需要將容器內(nèi)生成的構(gòu)建工件復(fù)制到主機上,例如,在持續(xù)集成服務(wù)器上使用Docker構(gòu)建依賴項,而不希望在代理服務(wù)器上安裝所有運行時和庫,所以本文給大家介紹了從Docker容器復(fù)制文件到主機的四種方法

技術(shù)背景

在使用Docker進行開發(fā)和部署時,有時需要將容器內(nèi)生成的構(gòu)建工件復(fù)制到主機上。例如,在持續(xù)集成(CI)服務(wù)器上使用Docker構(gòu)建依賴項,而不希望在代理服務(wù)器上安裝所有運行時和庫,這就需要將容器內(nèi)構(gòu)建的工件復(fù)制回主機。

實現(xiàn)步驟

方法一:使用docker cp命令

這是最直接的方法,可在容器運行或停止時使用。

  • 獲取容器ID或名稱:使用docker ps -a命令查看所有容器,獲取目標(biāo)容器的ID或名稱。
  • 復(fù)制文件:使用docker cp <containerId>:/file/path/within/container /host/path/target命令復(fù)制文件。
# 示例:復(fù)制容器內(nèi)的out_read.jpg文件到當(dāng)前目錄
sudo docker cp goofy_roentgen:/out_read.jpg .

方法二:使用docker create

此方法無需啟動容器。

  • 創(chuàng)建容器:使用docker create --name dummy IMAGE_NAME命令創(chuàng)建一個容器。
  • 復(fù)制文件:使用docker cp dummy:/path/to/file /dest/to/file命令復(fù)制文件。
  • 刪除容器:使用docker rm -f dummy命令刪除容器。
docker create --name dummy ubuntu
docker cp dummy:/etc/hosts ./hosts
docker rm -f dummy

方法三:掛載卷

通過掛載卷的方式,將容器內(nèi)的文件復(fù)制到主機上。

  • 創(chuàng)建目錄:在主機上創(chuàng)建一個目錄用于存儲工件。
  • 運行容器并掛載卷:使用docker run -i -v ${PWD}/artifacts:/artifacts ubuntu:14.04 sh << COMMANDS命令運行容器并掛載卷。
  • 在容器內(nèi)復(fù)制文件:在容器內(nèi)將工件復(fù)制到掛載的卷中。
mkdir artifacts
docker run -i -v ${PWD}/artifacts:/artifacts ubuntu:14.04 sh << COMMANDS
# 構(gòu)建軟件
cp <artifact> /artifacts
COMMANDS

方法四:使用BuildKit的--output選項(Docker 19.03及以上版本)

此方法可跳過創(chuàng)建容器和構(gòu)建鏡像的步驟。

  • 構(gòu)建:使用DOCKER_BUILDKIT=1 docker build --target artifact --output type=local,dest=. .命令構(gòu)建并將結(jié)果輸出到本地目錄。
DOCKER_BUILDKIT=1 docker build --target artifact --output type=local,dest=. .

核心代碼

使用docker cp

docker cp <containerId>:/file/path/within/container /host/path/target

使用docker create

docker create --name dummy IMAGE_NAME
docker cp dummy:/path/to/file /dest/to/file
docker rm -f dummy

掛載卷

mkdir artifacts
docker run -i -v ${PWD}/artifacts:/artifacts ubuntu:14.04 sh << COMMANDS
# 構(gòu)建軟件
cp <artifact> /artifacts
COMMANDS

使用BuildKit的--output選項

DOCKER_BUILDKIT=1 docker build --target artifact --output type=local,dest=. .

最佳實踐

  • 權(quán)限問題:在使用掛載卷的方法時,可能會遇到文件權(quán)限問題??梢允褂?code>chown命令調(diào)整文件的所有者和組。
docker run -i -v ${PWD}:/working_dir -w /working_dir -u $(id -u) \
    ubuntu:14.04 sh << COMMANDS
chown -R $(id -u):$(id -g) /working_dir/artifacts
COMMANDS
  • 使用容器名稱:使用容器名稱而不是ID,可提高命令的可讀性和可維護性。

常見問題

  • 容器未運行時docker cp是否可用:可以,容器不運行時也可以使用docker cp命令。
  • 復(fù)制目錄時出錯:如果復(fù)制目錄時出現(xiàn)權(quán)限問題,可以先將目錄復(fù)制到/tmp/,再從/tmp/移動到目標(biāo)位置。
docker cp 5f2371a7da7c:/home/euler/mfem/miniapps/navier/3dfoc /tmp/
mv /tmp/3dfoc ~/Downloads/

到此這篇關(guān)于從Docker容器復(fù)制文件到主機的四種方法的文章就介紹到這了,更多相關(guān)Docker復(fù)制文件到主機內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker安裝tomcat并部署Springboot項目war包的方法

    docker安裝tomcat并部署Springboot項目war包的方法

    這篇文章主要介紹了docker安裝tomcat并部署Springboot項目war包的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Docker數(shù)據(jù)存儲之Volumes詳解

    Docker數(shù)據(jù)存儲之Volumes詳解

    今天小編就為大家分享一篇關(guān)于Docker數(shù)據(jù)存儲之Volumes詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • docker中查看日志的幾種常見方式

    docker中查看日志的幾種常見方式

    這篇文章主要給大家介紹了關(guān)于docker中查看日志的幾種常見方式,Docker提供一些方式來查看容器的日志,文中將每種方法都給出了代碼示例,需要的朋友可以參考下
    2023-08-08
  • Docker的鏡像制作方法詳解

    Docker的鏡像制作方法詳解

    這篇文章主要介紹了Docker的鏡像制作方法的相關(guān)資料,文章講解了Docker鏡像的基本原理、結(jié)構(gòu)和制作方式,鏡像是創(chuàng)建Docker容器的基礎(chǔ),需要的朋友可以參考下
    2024-10-10
  • Docker安裝并使用Mysql的詳細教程(實測可用!)

    Docker安裝并使用Mysql的詳細教程(實測可用!)

    在日常的工作中經(jīng)常會需要將數(shù)據(jù)存在服務(wù)器,經(jīng)常用到的數(shù)據(jù)庫是mysql,下面這篇文章主要給大家介紹了關(guān)于Docker安裝并使用Mysql的詳細教程,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • docker鏡像訪問本地elasticsearch端口操作

    docker鏡像訪問本地elasticsearch端口操作

    這篇文章主要介紹了docker鏡像訪問本地elasticsearch端口操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • IDEA部署Docker到WSL2的詳細過程

    IDEA部署Docker到WSL2的詳細過程

    這篇文章主要介紹了IDEA 部署 Docker 到 WSL2的過程詳解,本地環(huán)境Windows10+WSL2(Ubuntu),具體操作過程跟隨小編一起看看吧
    2021-07-07
  • Docker 啟動Redis 并設(shè)置密碼的操作

    Docker 啟動Redis 并設(shè)置密碼的操作

    這篇文章主要介紹了Docker 啟動Redis 并設(shè)置密碼的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Docker容器跨主機通信中直接路由方式詳解

    Docker容器跨主機通信中直接路由方式詳解

    在本篇文章里我們給各位整理的是一篇關(guān)于Docker容器跨主機通信中直接路由方式詳解內(nèi)容,有需要的朋友們可以參考下。
    2019-10-10
  • docker-compose部署Java應(yīng)用和相關(guān)依賴方式

    docker-compose部署Java應(yīng)用和相關(guān)依賴方式

    介紹如何使用docker-compose一鍵部署Java應(yīng)用及依賴,并實現(xiàn)MySQL數(shù)據(jù)庫的自動初始化
    2024-10-10

最新評論