2021-05-12 14:32:11
Docker容器從映象恢復程式碼的操作步驟
有時候程式碼丟失了需要從容器執行的映象中恢復出所需程式碼,此時僅需在容器執行的伺服器進行簡單的幾步操作,就能提取出打包映象時使用的程式碼
檢視所有容器:
docker container ls -a
根據容器id進入到指定容器:
docker exec -ti id /bin/bash
拷貝容器內目錄到服務指定資料夾:
docker container cp id:/usr/local/tomcat/webapps/province-admin /home/test/province-admin
經過以上3布就已經把容器內程式碼提取到了伺服器指定目錄,從伺服器將程式碼下載到本地就可以檢視所需程式碼了
補充:docker資料卷容器備份、恢復超詳細!小白也可以!!!
在日常生活中,把容器和本地物理機做了目錄對映直接存在本地,那麼我們只需要對原生的硬碟定期備份就好了,但如果沒有這個對映的情況下,備份和恢復該如何處理呢?
首先我們建立一個需要備份的資料卷,
docker run -itd -v /opt/zz --name c1 centos /bin/bash
-itd 是以互動的方式執行,d是後臺執行
-v 是指定容器內的資料卷,如果指定的資料卷不存在,會自動建立
–name 自定義名字
/bin/bash 互動命令以/bin/bash來
為了驗證資料卷容器的備份功能,在掛載的/opt/zz目錄下建立一個c11檔案,並寫入內容"woda"。
[root@160e0646396d zz]# touch c11.txt [root@160e0646396d zz]# echo "woda" > c11.txt [root@160e0646396d zz]# cat c11.txt woda
然後為了給資料卷容器備份,使用 –volumes-from 來標記需要備份的資料卷,並從主機掛載當前目錄到容器的/v3目錄。
$(pwd)是docker支援的指定當前目錄的方法,瞭解linux基本命令的會發現,linux檢視當前目錄就是pwd命令。
容器啟動後,在當前目錄下生成的c23.tar檔案就是/opt/zz容器卷的備份檔案。
這樣,資料卷容器中的資料就備份完成。
整個實踐過程如下:
[root@client ~]# docker run --volumes-from c1 -v $(pwd):/v3 centos tar cvf /v3/c23.tar /opt/zz tar: Removing leading `/' from member names /opt/zz/ /opt/zz/c11.txt
最後我們就可以看到我們之前在需要備份的容器的資料卷裡的內容了,/opt/zz/c11.txt
–volumes-from < Container >: 連線要備份資料的容器
-v $(pwd):/v3:掛載當前路徑到容器centos 容器,資料將會備份到此路徑
centos: 非常小的映象
tar cvf /v3/c23.tar /opt/zz: 將 /opt/zz 路徑下的檔案打包到 c23.tar
二 恢復
備份最終也是為了可以恢復,否則備份就沒有意義了,Docker恢復備份也很簡單,只需要2步即可。
首先,建立一個帶有空資料卷的容器/opt/x2。
docker run -itd -v /opt/x2 --name c3 centos /bin/bash docker run -itd -v /opt/x2 --name c3 centos /bin/bash
然後,建立另一個容器,掛載data1容器卷中的資料卷,並使用untar解壓備份檔案到掛載的容器卷中。
docker run --volumes-from c3 -v $(pwd):/v3 centos tar xvf /v3/c23.tar
這個時候,之前備份的資料卷容器的資料已經恢復到了容器/opt/x2中了。
為了檢視和驗證恢復的資料,我們可以再啟動一個容器掛載/opt/x2容器捲來檢視。
整個實踐過程如下:
[root@client ~]# docker run --volumes-from c3 -v $(pwd):/v3 centos tar xvf /v3/c23.tar opt/zz/ opt/zz/c11.txt
最後我們就可以看到我們之前備份的c11.txt,現在已經恢復到c3這個容器中的資料捲了
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章