文章目錄
一、前言
在上一篇文章中已經介紹了docker容器數據卷與數據卷容器, 下面正式進入到docker數據的備份、恢復與遷移的講解。
二、docker數據的備份、恢復與遷移
有時在docker中產生的數據,我們需要進行相應的備份和遷移到另外一臺服務器上,並在另一臺服務器上進行數據的恢復,那麼改如何操作呢?如下將介紹三種方式進行數據的備份、恢復與遷移:
方式一:docker容器的備份、恢復與遷移
1、docker容器的備份 (導出)
docker export -o 容器導出文件(格式爲tar壓縮文件) 容器ID或容器名稱
或
docker export 容器ID或容器名稱 > 容器導出文件(格式爲tar壓縮文件)
示例:
docker export -o $(pwd)/newtomcat.tar mytomcat
或
docker export mytomcat > $(pwd)/newtomcat.tar
註釋:
$(pwd)是docker支持的獲取當前目錄路徑的方法,與linux的pwd類似
$(pwd)/newtomcat.tar 表示在當前目錄下生成一個newtomcat.tar壓縮文件
備註:
容器可以不啓動進行備份操作
2、docker容器的遷移與恢復 (導入)
docker import 容器導出文件(格式爲tar壓縮文件) 新鏡像名稱[:版本號]
或
docker import /URL 新鏡像名稱[:版本號]
示例:
docker import $(pwd)/newtomcat.tar newtomcat:v1.0
或
docker import http://example.com/exampleimage.tgz example/imagerepo
方式二:docker鏡像的備份、恢復與遷移
1、docker鏡像的備份 (導出)
docker save -o 鏡像導出文件(格式爲tar壓縮文件) 鏡像ID或鏡像名稱[:版本號]
或
docker save 鏡像ID或鏡像名稱[:版本號] > 鏡像導出文件(格式爲tar壓縮文件)
示例:
docker save -o $(pwd)/mytomcat.tar newtomcat:v1.0
或
docker save newtomcat:v1.0 > $(pwd)/mytomcat.tar
2、docker鏡像的遷移與恢復 (導入)
docker load -i 鏡像導出文件(格式爲tar壓縮文件)
或
docker load < 鏡像導出文件(格式爲tar壓縮文件)
示例:
docker load -i $(pwd)/mytomcat.tar
或
docker load < $(pwd)/mytomcat.tar
注意:用戶既可以使用 docker load
來導入鏡像存儲文件
到本地鏡像庫,也可以使用 docker import
來導入一個容器快照
到本地鏡像庫。這兩者的區別在於容器快照文件
將丟棄所有的歷史記錄和元數據信息
(即僅保存容器當時的快照狀態),而鏡像存儲文件將保存完整記錄,體積也要大
。此外,容器快照文件
方式導入可以重新指定鏡像標籤等元數據信息
。
方式三:docker數據卷的備份、恢復與遷移
1、docker數據卷的備份 (導出)
//單個數據卷的備份
docker run --volumes-from 數據卷容器ID/數據卷容器名稱 -v 宿主機備份目錄:容器備份目錄 鏡像ID/鏡像名稱[:版本號] tar cvf 容器目錄/數據卷壓縮文件(格式爲tar壓縮文件) 容器數據卷文件/目錄
//多個數據卷的備份
docker run --volumes-from 數據卷容器ID/數據卷容器名稱 -v 宿主機備份目錄:容器備份目錄 鏡像ID/鏡像名稱[:版本號] tar cvf 容器目錄/數據卷壓縮文件(格式爲tar壓縮文件) 容器數據卷文件1/目錄1 容器數據卷文件2/目錄2
示例:
//單個數據卷的備份
docker run --volumes-from mycentos -v $(pwd):/backup centos tar cvf /backup/newcentos.tar /containerVolume
//多個數據卷的備份
docker run --volumes-from mycentos -v $(pwd):/backup centos tar cvf /backup/newcentos.tar /containerVolume1 /containerVolume2
//如果想要在執行完備份指令後,刪除臨時容器,請在run 後面加上--rm屬性,表示在執行完後立即刪除該容器
docker run --rm --volumes-from mycentos -v $(pwd):/backup centos tar cvf /backup/newcentos.tar /containerVolume
注意:
- 數據卷容器可以
不啓動(即容器退出停止)
進行備份操作 - 這裏的
數據卷壓縮文件的路徑
要選擇導出到容器備份目錄下
,即 如果容器備份目錄
爲/backup,則數據卷壓縮文件的路徑
爲/backup/newcentos.tar
,因爲宿主機備份目錄
與容器備份目錄
做了數據卷掛載
,只有將數據卷壓縮文件的導出路徑
選擇在容器備份目錄
下,才能同步到宿主機備份目錄
下。
2、docker數據卷的遷移與恢復 (導入)
//單個數據卷 與 多個數據卷的 數據卷恢復指令相同
docker run --volumes-from 需要恢復數據的數據卷容器ID/名稱 -v 宿主機備份目錄:容器備份目錄 鏡像ID/鏡像名稱[:版本號] tar xvf 容器備份目錄/數據卷壓縮文件(格式爲tar壓縮文件)
示例:
docker run --volumes-from mycentos -v $(pwd):/backup centos tar xvf /backup/newcentos.tar
//如果想要在執行完數據恢復指令後,刪除臨時容器,請在run 後面加上--rm屬性,表示在執行完後立即刪除該容器
docker run --rm --volumes-from mycentos -v $(pwd):/backup centos tar xvf /backup/newcentos.tar
注意:
-
需要恢復數據的數據卷容器可以
不啓動(即容器退出停止)
進行數據恢復操作 -
如果要把數據卷恢復到
新的容器
中,那麼新的容器
中的數據卷
要與之前備份的容器數據卷的路徑和名稱要一致
,(即:之前要備份的容器數據卷
爲/data
或者/var/containerVolume
,那麼新容器
的數據卷
的路徑和名稱也要爲/data
或者/var/containerVolume
),例子:之前需要備份的容器與宿主機的掛載情況爲-v ~/hostVolume:/containerVolume
,那麼需要備份的新容器與宿主機的掛載情況爲:-v ~/host:/containerVolume
,即新容器數據卷的路徑和名稱 要與 備份的容器數據卷路徑和名稱必須一致,爲/containerVolume
,宿主機的數據卷路徑和名稱可以不一致 -
這裏的
數據卷壓縮文件
要選擇容器備份目錄下
的,(即 如果容器備份目錄
爲/backup
,則數據卷導出文件的路徑
爲/backup/newcentos.tar
)
1、刪除數據卷容器mycentos中的數據卷裏的data.txt文件,模擬數據的丟失
2、對丟失數據的數據卷容器mycentos 進行數據的恢復
Docker入門到實踐系列文章列表:
Docker入門到實踐 (一) docker簡介與安裝
Docker入門到實踐 (二) docker常用命令講解
Docker入門到實踐 (三) Dockerfile解析與鏡像製作
Docker入門到實踐 (四) docker容器數據卷與數據卷容器
Docker入門到實踐 (五) docker數據的備份、恢復與遷移
Docker入門到實踐 (六) docker常用軟件安裝
Docker入門到實踐 (七) 本地鏡像推送到阿里雲 和 下載鏡像到本地
Docker入門到實踐 (八) Docker私有倉庫的搭建與配置
Docker入門到實踐 (九) IDEA集成Docker構建容器鏡像,部署項目
如果有遇到不懂或者有問題時,可以掃描下方二維碼,歡迎進羣交流與分享,希望能夠跟大家交流學習!