Docker容器中文件與本地相互復(fù)制拷貝方式
前言
遇到一些問題需要將docker內(nèi)的容器拷貝到本地同時舉一反三將本地文件或者文件夾拷貝到容器中的方法
這里主要講解方法,故一法通萬法通
先上結(jié)果
# 本地到服務(wù)器 docker cp 本地路徑 容器id或者容器名字:容器內(nèi)路徑 # 服務(wù)器到本地 docker cp 容器id或者容器名字:容器內(nèi)路徑 本地路徑
首先您既然看到了我的博客就說明我們要走一走正常的路,而不是在CSDN或者其他論壇甚至百度上面肆意馳騁試錯,我們首先打開Docker官網(wǎng)

然后我們鼠標(biāo)在Developers上懸停之后點擊Docs 接下來我們就進(jìn)入到了docker docs,也可以直接進(jìn)入這個網(wǎng)站

然后我們需要在搜索欄中敲入我們想查詢的東西,大家都是程序猿所以復(fù)制嘛很通俗的單詞copy
這里我們會發(fā)現(xiàn)檢索出來了很多東西,我們只需要找到我們想用的就好了

英語不是很好的話可以通過chrome的翻譯功能,我就不是很好我們可以發(fā)現(xiàn)

我們成功找到了位置

重點
接下來我們要對這段話進(jìn)行翻譯
Extended descriptionCopy files/folders between a container and the local filesystem
Use ‘-‘ as the source to read a tar archive from stdin and extract it to a directory destination in a container. Use ‘-‘ as the destination to stream a tar archive of a container source to stdout.
擴展說明:
在容器和本地文件系統(tǒng)之間復(fù)制文件/文件夾 使用“-”作為源從標(biāo)準(zhǔn)輸入讀取 tar 存檔并將其解壓縮到容器中的目錄目標(biāo)。使用“-”作為將容器源的 tar 存檔流式傳輸?shù)綐?biāo)準(zhǔn)輸出的目標(biāo)。
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- # 解讀命令 CONTAINER:SRC_PATH => 表示前面是容器:后面是容器的 # 解讀命令 DEST_PATH => 本地路徑 # 至于-的意思在上述文字中表述股這里不做贅述
如果沒有tar的情況可以直接用
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH # 解讀命令 CONTAINER:SRC_PATH => 表示前面是容器:后面是容器的 # 解讀命令 DEST_PATH => 本地路徑
測試!!!(因為在學(xué)習(xí)zookeeper這里用zookeeper作為例子)
下方的shell不做任何解釋解釋都在下方shell的# 后面的注釋中了,我想偷懶嗯嗯不想整理了(沒用“-”的原因是因為我沒有tar
# 首先查看是否有我想要復(fù)制的文件,這里面是沒有的 root@azang405:/# ls azang_data dev lib libx32 mnt root srv tmp bin etc lib32 lost+found opt run swapfile usr boot home lib64 media proc sbin sys var # 將zookeeper中的zkCLi.sh復(fù)制出來 root@azang405:/# docker cp my-zookeeper:/apache-zookeeper-3.7.0-bin/bin/zkCli.sh / # 這里會發(fā)現(xiàn)他出現(xiàn)了在第一排最后一個位置成功! root@azang405:/# ls azang_data etc lib64 mnt run sys zkCli.sh bin home libx32 opt sbin tmp boot lib lost+found proc srv usr dev lib32 media root swapfile var # 我們先創(chuàng)建一個測試用的azang文件夾 root@azang405:/# mkdir azang # 現(xiàn)在本地中查看是否創(chuàng)建成功 root@azang405:/# ls azang dev lib32 media root swapfile var azang_data etc lib64 mnt run sys zkCli.sh bin home libx32 opt sbin tmp boot lib lost+found proc srv usr root@2c82c6d0750e:/apache-zookeeper-3.7.0-bin/bin# ls README.txt zkCli.cmd zkEnv.cmd zkServer-initialize.sh zkServer.sh zkSnapShotToolkit.sh zkSnapshotComparer.sh zkTxnLogToolkit.sh zkCleanup.sh zkCli.sh zkEnv.sh zkServer.cmd zkSnapShotToolkit.cmd zkSnapshotComparer.cmd zkTxnLogToolkit.cmd #接下來我們進(jìn)行復(fù)制 root@azang405:/# docker cp /azang my-zookeeper:/apache-zookeeper-3.7.0-bin/bin/ # 重新查看 容器內(nèi)部這里我們可以找到azang文件夾 root@2c82c6d0750e:/apache-zookeeper-3.7.0-bin/bin# ls README.txt zkCleanup.sh zkCli.sh zkEnv.sh zkServer.cmd zkSnapShotToolkit.cmd zkSnapshotComparer.cmd zkTxnLogToolkit.cmd azang zkCli.cmd zkEnv.cmd zkServer-initialize.sh zkServer.sh zkSnapShotToolkit.sh zkSnapshotComparer.sh zkTxnLogToolkit.sh
這里從容器中復(fù)制到容器外部不做演示
重復(fù)一下結(jié)果
# 本地到服務(wù)器 docker cp 本地路徑 容器id或者容器名字:容器內(nèi)路徑 # 服務(wù)器到本地 docker cp 容器id或者容器名字:容器內(nèi)路徑 本地路徑
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker 數(shù)據(jù)持久化的三種方式小結(jié)
本文主要介紹了Docker 數(shù)據(jù)持久化的三種方式小結(jié),主要包括volume、bind mounts、tmpfs mounts這三種方式,具有一定的參考價值,感興趣的可以了解一下2024-01-01
低版本Docker升級高版本Docker的詳細(xì)教程及成功避坑
如果我們使用docker來管理容器,那么保持docker引擎的更新將會是十分重要的,下面這篇文章主要給大家介紹了關(guān)于低版本Docker升級高版本Docker的詳細(xì)教程及成功避坑,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
docker容器內(nèi)要啟動兩個進(jìn)程時Dockerfile的實現(xiàn)代碼
這篇文章主要介紹了docker容器內(nèi)要啟動兩個進(jìn)程時Dockerfile的實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
利用?trap?在?docker?容器優(yōu)雅關(guān)閉前執(zhí)行環(huán)境清理的方案
這篇文章主要介紹了利用?trap?在?docker?容器優(yōu)雅關(guān)閉前執(zhí)行環(huán)境清理的問題,需要在容器的啟動腳本中,加入 trap 指令,來完成容器在退出前需要做的所有事情,本文通過腳本示例給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-12-12
Docker實現(xiàn)將鏡像從1.2GB壓縮到200MB的優(yōu)化指南
作為一名在容器化領(lǐng)域摸爬滾打多年的開發(fā)者,深知Docker鏡像大小對生產(chǎn)環(huán)境的影響,本文將詳細(xì)記錄優(yōu)化歷程,從問題分析到解決方案實施,從理論原理到實戰(zhàn)技巧,感興趣的小伙伴可以了解下2025-09-09

