1. 備份容器
首先,為了備份Docker中的容器,我們會想看看我們想要備份的容器列表。要達成該目的,我們需要在我們運行着Docker引擎,並已創建了容器的Linux機器中運行 docker ps 命令。
# docker ps
在此之后,我們要選擇我們想要備份的容器,然后去創建該容器的快照。我們可以使用 docker commit 命令來創建快照。
# docker commit -p 30b8f18f20b4 container-backup
該命令會生成一個作為Docker鏡像的容器快照,我們可以通過運行 docker images
命令來查看Docker鏡像,如下。
# docker images
正如我們所看見的,上面做的快照已經作為Docker鏡像保存了。現在,為了備份該快照,我們有兩個選擇,一個是我們可以登錄進Docker注冊中心,並推送該鏡像;另一個是我們可以將Docker鏡像打包成tar包備份,以供今后使用。
如果我們想要在Docker注冊中心上傳或備份鏡像,我們只需要運行 docker login 命令來登錄進Docker注冊中心,然后推送所需的鏡像即可。
# docker login 172.16.101.192
# docker tag a25ddfec4d2a arunpyasi/container-backup:test
# docker push arunpyasi/container-backup
如果我們不想備份到docker注冊中心,而是想要將此鏡像保存在本地機器中,以供日后使用,那么我們可以將其作為tar包備份。要完成該操作,我們需要運行以下 docker save
命令。
# docker save -o ~/container-backup.tar container-backup
要驗證tar包是否已經生成,我們只需要在保存tar包的目錄中運行 ls 命令即可。
2. 恢復容器
接下來,在我們成功備份了我們的Docker容器后,我們現在來恢復這些制作了Docker鏡像快照的容器。如果我們已經在注冊中心推送了這些Docker鏡像,那么我們僅僅需要把那個Docker鏡像拖回並直接運行即可。
# docker pull arunpyasi/container-backup:test
但是,如果我們將這些Docker鏡像作為tar包文件備份到了本地,那么我們只要使用 docker load 命令,后面加上tar包的備份路徑,就可以加載該Docker鏡像了。
# docker load -i ~/container-backup.tar
現在,為了確保這些Docker鏡像已經加載成功,我們來運行 docker images 命令。
# docker images
在鏡像被加載后,我們將用加載的鏡像去運行Docker容器。
# docker run -d -p 80:80 container-backup
3. 遷移Docker容器
遷移容器同時涉及到了上面兩個操作,備份和恢復。我們可以將任何一個Docker容器從一台機器遷移到另一台機器。在遷移過程中,首先我們將把容器備份為Docker鏡像快照。然后,該Docker鏡像或者是被推送到了Docker注冊中心,或者被作為tar包文件保存到了本地。如果我們將鏡像推送到了Docker注冊中心,我們簡單地從任何我們想要的機器上使用 docker run 命令來恢復並運行該容器。但是,如果我們將鏡像打包成tar包備份到了本地,我們只需要拷貝或移動該鏡像到我們想要的機器上,加載該鏡像並運行需要的容器即可。