詳解Docker中容器的備份、恢復(fù)和遷移
今天,我們將學(xué)習(xí)如何快速地對(duì)docker容器進(jìn)行快捷備份、恢復(fù)和遷移。Docker是一個(gè)開源平臺(tái),用于自動(dòng)化部署應(yīng)用,以通過(guò)快捷的途徑在稱之為容器的輕量級(jí)軟件層下打包、發(fā)布和運(yùn)行這些應(yīng)用。它使得應(yīng)用平臺(tái)獨(dú)立,因?yàn)樗缪萘?Linux上一個(gè)額外的操作系統(tǒng)級(jí)虛擬化的自動(dòng)化抽象層。它通過(guò)其組件cgroups和命名空間利用Linux內(nèi)核的資源分離特性,達(dá)到避免虛擬機(jī)開銷的目的。它使得用于部署和擴(kuò)展web應(yīng)用、數(shù)據(jù)庫(kù)和后端服務(wù)的大規(guī)模構(gòu)建組件無(wú)需依賴于特定的堆?;蚬?yīng)者。
所謂的容器,就是那些創(chuàng)建自Docker鏡像的軟件層,它包含了獨(dú)立的Linux文件系統(tǒng)和開箱即用的應(yīng)用程序。如果我們有一個(gè)在機(jī)器中運(yùn)行著的 Docker容器,并且想要備份這些容器以便今后使用,或者想要遷移這些容器,那么,本教程將幫助你掌握在Linux操作系統(tǒng)中備份、恢復(fù)和遷移 Docker容器的方法。
我們?cè)鯓硬拍茉贚inux中備份、恢復(fù)和遷移Docker容器呢?這里為您提供了一些便捷的步驟。
1. 備份容器
首先,為了備份Docker中的容器,我們會(huì)想看看我們想要備份的容器列表。要達(dá)成該目的,我們需要在我們運(yùn)行著Docker引擎,并已創(chuàng)建了容器的Linux機(jī)器中運(yùn)行 docker ps 命令。
# docker ps

在此之后,我們要選擇我們想要備份的容器,然后去創(chuàng)建該容器的快照。我們可以使用 docker commit 命令來(lái)創(chuàng)建快照。
# docker commit -p 30b8f18f20b4 container-backup

該命令會(huì)生成一個(gè)作為Docker鏡像的容器快照,我們可以通過(guò)運(yùn)行 docker images 命令來(lái)查看Docker鏡像,如下。
# docker images

正如我們所看見(jiàn)的,上面做的快照已經(jīng)作為Docker鏡像保存了?,F(xiàn)在,為了備份該快照,我們有兩個(gè)選擇,一個(gè)是我們可以登錄進(jìn)Docker注冊(cè)中心,并推送該鏡像;另一個(gè)是我們可以將Docker鏡像打包成tar包備份,以供今后使用。
如果我們想要在Docker注冊(cè)中心上傳或備份鏡像,我們只需要運(yùn)行 docker login 命令來(lái)登錄進(jìn)Docker注冊(cè)中心,然后推送所需的鏡像即可。
# docker login

# docker tag a25ddfec4d2a arunpyasi/container-backup:test# docker push arunpyasi/container-backup

如果我們不想備份到docker注冊(cè)中心,而是想要將此鏡像保存在本地機(jī)器中,以供日后使用,那么我們可以將其作為tar包備份。要完成該操作,我們需要運(yùn)行以下 docker save 命令。
# docker save -o ~/container-backup.tar container-backup

要驗(yàn)證tar包是否已經(jīng)生成,我們只需要在保存tar包的目錄中運(yùn)行 ls 命令即可。
2. 恢復(fù)容器
接下來(lái),在我們成功備份了我們的Docker容器后,我們現(xiàn)在來(lái)恢復(fù)這些制作了Docker鏡像快照的容器。如果我們已經(jīng)在注冊(cè)中心推送了這些Docker鏡像,那么我們僅僅需要把那個(gè)Docker鏡像拖回并直接運(yùn)行即可。
# docker pull arunpyasi/container-backup:test

但是,如果我們將這些Docker鏡像作為tar包文件備份到了本地,那么我們只要使用 docker load 命令,后面加上tar包的備份路徑,就可以加載該Docker鏡像了。
# docker load -i ~/container-backup.tar
現(xiàn)在,為了確保這些Docker鏡像已經(jīng)加載成功,我們來(lái)運(yùn)行 docker images 命令。
# docker images
在鏡像被加載后,我們將用加載的鏡像去運(yùn)行Docker容器。
# docker run -d -p 80:80 container-backup

3. 遷移Docker容器
遷移容器同時(shí)涉及到了上面兩個(gè)操作,備份和恢復(fù)。我們可以將任何一個(gè)Docker容器從一臺(tái)機(jī)器遷移到另一臺(tái)機(jī)器。在遷移過(guò)程中,首先我們將把容器備份為Docker鏡像快照。然后,該Docker鏡像或者是被推送到了Docker注冊(cè)中心,或者被作為tar包文件保存到了本地。如果我們將鏡像推送到了Docker注冊(cè)中心,我們簡(jiǎn)單地從任何我們想要的機(jī)器上使用 docker run 命令來(lái)恢復(fù)并運(yùn)行該容器。但是,如果我們將鏡像打包成tar包備份到了本地,我們只需要拷貝或移動(dòng)該鏡像到我們想要的機(jī)器上,加載該鏡像并運(yùn)行需要的容器即可。
尾聲
最后,我們已經(jīng)學(xué)習(xí)了如何快速地備份、恢復(fù)和遷移Docker容器,本教程適用于各個(gè)可以成功運(yùn)行Docker的操作系統(tǒng)平臺(tái)。真的,Docker 是一個(gè)相當(dāng)簡(jiǎn)單易用,然而功能卻十分強(qiáng)大的工具。它的命令相當(dāng)易記,這些命令都非常短,帶有許多簡(jiǎn)單而強(qiáng)大的標(biāo)記和參數(shù)。上面的方法讓我們備份容器時(shí)很是安逸,使得我們可以在日后很輕松地恢復(fù)它們。這會(huì)幫助我們恢復(fù)我們的容器和鏡像,即便主機(jī)系統(tǒng)崩潰,甚至意外地被清除。
相關(guān)文章
詳解Docker創(chuàng)建支持ssh服務(wù)的容器和鏡像
本篇文章主要介紹了詳解Docker創(chuàng)建支持ssh服務(wù)的容器和鏡像,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
docker imageid 和 digest區(qū)別解析
在Docker中,image ID和digest是兩個(gè)不同的標(biāo)識(shí)符,用于唯一標(biāo)識(shí)和引用Docker鏡像的不同方面,這篇文章主要介紹了docker imageid 和 digest區(qū)別,需要的朋友可以參考下2023-06-06
Docker拉取ubuntu鏡像并建立環(huán)境的詳細(xì)過(guò)程
在Docker實(shí)戰(zhàn)中Ubuntu是一個(gè)常見(jiàn)的基礎(chǔ)鏡像,用于構(gòu)建其他應(yīng)用服務(wù)的容器,這篇文章主要給大家介紹了關(guān)于Docker拉取ubuntu鏡像并建立環(huán)境的詳細(xì)過(guò)程,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
Linux下docker 容器退出bash的兩種實(shí)現(xiàn)方法
這篇文章主要介紹了Linux下docker 容器退出bash的兩種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
Ubuntu15.10安裝docker和docker-compose教程
這篇文章主要介紹了Ubuntu15.10安裝docker和docker-compose的教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
docker實(shí)踐之從新鏡像啟動(dòng)容器報(bào)錯(cuò)解決
這篇文章主要介紹了docker實(shí)踐之從新鏡像啟動(dòng)容器報(bào)錯(cuò)解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08

