Docker容器遷移到其他服務(wù)器的5種方法詳解
遷移在許多情況下都是不可避免的。硬件升級(jí)、數(shù)據(jù)中心變化、過(guò)時(shí)的操作系統(tǒng),所有這些都可能成為遷移的觸發(fā)點(diǎn)。
Docker容器遷移通常是遷移任務(wù)的一部分。今天我們將看到將Docker容器從現(xiàn)有服務(wù)器遷移到另一臺(tái)服務(wù)器的不同方法。
如何將Docker容器遷移到另一臺(tái)服務(wù)器,沒(méi)有直接將Docker容器從一臺(tái)服務(wù)器遷移到另一臺(tái)服務(wù)器的方法,我們通過(guò)使用下面這些方法中的一個(gè)或多個(gè)來(lái)解決Docker容器遷移的問(wèn)題。
1、導(dǎo)出和導(dǎo)入容器
導(dǎo)出容器意味著從容器的文件系統(tǒng)創(chuàng)建壓縮文件,導(dǎo)出的文件保存為“gzip”文件。
docker export container-name | gzip > container-name.gz
然后通過(guò)文件傳輸工具(如scp或rsync)將壓縮文件復(fù)制到新服務(wù)器。在新服務(wù)器中,這個(gè)gzip文件隨后被導(dǎo)入到一個(gè)新容器中。
zcat container-name.gz | docker import - container-name
可以使用“docker run”命令訪問(wèn)在新服務(wù)器中創(chuàng)建的新容器。
導(dǎo)出容器工具的一個(gè)缺點(diǎn)是,它不導(dǎo)出容器的端口和變量,也不導(dǎo)出包含容器的底層數(shù)據(jù)。
當(dāng)嘗試在另一臺(tái)服務(wù)器中加載容器時(shí),這可能會(huì)導(dǎo)致錯(cuò)誤。在這種情況下,我們選擇Docker鏡像遷移來(lái)將容器從一臺(tái)服務(wù)器遷移到另一臺(tái)服務(wù)器。
2、容器鏡像遷移
將Docker容器遷移到另一臺(tái)服務(wù)器的最常用方法是遷移容器關(guān)聯(lián)到的鏡像。
對(duì)于必須遷移的容器,首先使用“Docker commit”命令將其Docker鏡像保存到壓縮文件中。
docker commit container-id image-name
生成的鏡像將被壓縮并上傳到新服務(wù)器上,在新服務(wù)器中,將使用“docker run”創(chuàng)建一個(gè)新容器。
使用此方法,數(shù)據(jù)卷不會(huì)被遷移,但它會(huì)保留在容器內(nèi)創(chuàng)建的應(yīng)用程序的數(shù)據(jù)。
3、保存和加載鏡像
docker鏡像是應(yīng)用程序的代碼、庫(kù)、配置文件等的包。Docker容器是由這些鏡像創(chuàng)建的。
可以使用“docker save”壓縮鏡像并將其遷移到新服務(wù)器。
docker save image-name > image-name.tar
在新服務(wù)器中,使用“docker load”將壓縮鏡像文件用于創(chuàng)建新鏡像。
cat image-name.tar | docker load
4、遷移數(shù)據(jù)卷
Docker容器中的數(shù)據(jù)卷是共享目錄,其中包含特定于容器的數(shù)據(jù)。卷中的數(shù)據(jù)是持久的,在容器重新創(chuàng)建期間不會(huì)丟失。
使用導(dǎo)出或提交工具將Docker容器或鏡像從一臺(tái)服務(wù)器遷移到另一臺(tái)服務(wù)器時(shí),不會(huì)遷移基礎(chǔ)數(shù)據(jù)卷。
在這種情況下,包含數(shù)據(jù)的目錄將手動(dòng)遷移到新服務(wù)器。然后在新服務(wù)器創(chuàng)建容器,引用該目錄作為其數(shù)據(jù)卷。
另一個(gè)簡(jiǎn)單的方法是通過(guò)在“docker run”命令中傳遞“-volumes from”參數(shù)來(lái)備份和恢復(fù)數(shù)據(jù)卷。
docker run --rm --volumes-from datavolume-name -v $(pwd):/backup image-name tar cvf backup.tar /path-to-datavolume
這里,datavolume名稱是/path/to/volume。此命令提供數(shù)據(jù)卷的備份。要指定工作目錄,還可以指定-w/backup。在/backup文件夾中生成的備份可以通過(guò)scp或ftp工具復(fù)制到新服務(wù)器。然后提取復(fù)制的備份并將其還原到新容器中的數(shù)據(jù)卷中。
docker run --rm --volumes-from datavolume-name -v $(pwd):/backup image-name bash -c "cd /path-to-datavolume && tar xvf /backup/backup.tar --strip 1"
5、遷移整個(gè)Docker容器
我們?cè)谶@里看到的方法適用于單個(gè)容器。但是將所有容器都要從一臺(tái)服務(wù)器遷移到另一臺(tái)服務(wù)器的情況下,我們采用另一種方法。
此方法包括將整個(gè)docker目錄(“/var/lib/docker”)復(fù)制到新服務(wù)器。為了使這種方法成功,需要確定幾個(gè)關(guān)鍵點(diǎn)。
- 保留文件夾的權(quán)限和所有權(quán)。
- 遷移前停止Docker服務(wù)。
- 驗(yàn)證兩臺(tái)服務(wù)器中的Docker版本是否兼容。
- 遷移前后驗(yàn)證容器列表和功能。
- 環(huán)境變量和其他配置文件的路徑。
如果此方法由于任何故障而無(wú)法工作,我們將配置自定義腳本以將容器和鏡像從一臺(tái)服務(wù)器遷移到另一臺(tái)服務(wù)器。
結(jié)論:Docker容器廣泛應(yīng)用于DevOps和基于web托管。今天我們討論了Docker工程師如何將Docker容器遷移到我們管理的Docker基礎(chǔ)設(shè)施中的另一臺(tái)服務(wù)器的各種方法。
到此這篇關(guān)于Docker容器遷移到其他服務(wù)器的5種方法的文章就介紹到這了,更多相關(guān)Docker容器遷移到服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker常用命令總結(jié)之安裝、鏡像、容器基本操作
這篇文章主要介紹了docker常用命令總結(jié)之安裝、鏡像、容器基本操作,需要的朋友可以參考下2017-05-05Ubuntu 搭建基于Docker的LNMP+Redis的開(kāi)發(fā)環(huán)境(圖文)
這篇文章主要介紹了Ubuntu 搭建基于Docker的LNMP+Redis的開(kāi)發(fā)環(huán)境的相關(guān)資料,這里詳細(xì)介紹如何搭建的步驟,并附圖文,需要的朋友可以參考下2016-12-12Centos Docker1.12 遠(yuǎn)程Rest api訪問(wèn)的配置方法
這篇文章主要介紹了Centos Docker1.12 遠(yuǎn)程Rest api訪問(wèn)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01Docker安裝Nginx并部署及MySQL容器構(gòu)建全過(guò)程
眾所周知Docker是一種容器化技術(shù),可以用來(lái)快速部署和管理應(yīng)用程序,這篇文章主要給大家介紹了關(guān)于Docker安裝Nginx并部署及MySQL容器構(gòu)建的相關(guān)資料,需要的朋友可以參考下2024-02-02docker安裝opengauss數(shù)據(jù)庫(kù)配置過(guò)程詳解
這篇文章主要為大家介紹了docker安裝opengauss數(shù)據(jù)庫(kù)配置過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09如何運(yùn)用docker配合python開(kāi)發(fā)環(huán)境實(shí)例
本篇文章主要介紹了如何運(yùn)用docker配合python開(kāi)發(fā)實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07docker設(shè)置了端口映射,不能訪問(wèn)的解決方案
這篇文章主要介紹了docker設(shè)置了端口映射,不能訪問(wèn)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03Docker拉取鏡像失敗解決(connect: connection refused)
最近遇到Docker拉取centos鏡像時(shí)報(bào)錯(cuò),本文主要介紹了Docker拉取鏡像失敗解決(connect: connection refused),具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07