Docker容器中文件與本地相互復制拷貝方式
前言
遇到一些問題需要將docker內的容器拷貝到本地同時舉一反三將本地文件或者文件夾拷貝到容器中的方法
這里主要講解方法,故一法通萬法通
先上結果
# 本地到服務器 docker cp 本地路徑 容器id或者容器名字:容器內路徑 # 服務器到本地 docker cp 容器id或者容器名字:容器內路徑 本地路徑
首先您既然看到了我的博客就說明我們要走一走正常的路,而不是在CSDN或者其他論壇甚至百度上面肆意馳騁試錯,我們首先打開Docker官網
然后我們鼠標在Developers上懸停之后點擊Docs 接下來我們就進入到了docker docs,也可以直接進入這個網站
然后我們需要在搜索欄中敲入我們想查詢的東西,大家都是程序猿所以復制嘛很通俗的單詞copy
這里我們會發(fā)現(xiàn)檢索出來了很多東西,我們只需要找到我們想用的就好了
英語不是很好的話可以通過chrome的翻譯功能,我就不是很好我們可以發(fā)現(xià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)之間復制文件/文件夾 使用“-”作為源從標準輸入讀取 tar 存檔并將其解壓縮到容器中的目錄目標。使用“-”作為將容器源的 tar 存檔流式傳輸到標準輸出的目標。
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 => 本地路徑
測試!!!(因為在學習zookeeper這里用zookeeper作為例子)
下方的shell不做任何解釋解釋都在下方shell的# 后面的注釋中了,我想偷懶嗯嗯不想整理了(沒用“-”的原因是因為我沒有tar
# 首先查看是否有我想要復制的文件,這里面是沒有的 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復制出來 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 #接下來我們進行復制 root@azang405:/# docker cp /azang my-zookeeper:/apache-zookeeper-3.7.0-bin/bin/ # 重新查看 容器內部這里我們可以找到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
這里從容器中復制到容器外部不做演示
重復一下結果
# 本地到服務器 docker cp 本地路徑 容器id或者容器名字:容器內路徑 # 服務器到本地 docker cp 容器id或者容器名字:容器內路徑 本地路徑
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Linux/Docker 中使用 System.Drawing.Common 踩坑記錄分享
這篇文章主要介紹了Linux/Docker 中使用 System.Drawing.Common 踩坑記錄,本文通過兩種方案給大家詳細介紹,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07Docker容器上用DockerFile部署多個tomcat服務的步驟
這篇文章主要介紹了Docker容器上用DockerFile部署多個tomcat服務的步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11