42 volume 生命週期管理

2022-08-20 13:57:08 字數 2071 閱讀 8471

data volume 中存放的是重要的應用資料,如何管理 volume 對應用至關重要。前面我們主要關注的是 volume 的建立、共享和使用,本節將討論如何備份、恢復、遷移和銷毀 volume。

備份

因為 volume 實際上是 host 檔案系統中的目錄和檔案,所以 volume 的備份實際上是對檔案系統的備份。

還記得前面我們是如何搭建本地 registry 的嗎?

所有的本地映象都存在 host 的 /myregistry 目錄中,我們要做的就是定期備份這個目錄。

恢復

volume 的恢復也很簡單,如果資料損壞了,直接用之前備份的資料拷貝到 /myregistry 就可以了。

遷移

如果我們想使用更新版本的 registry,這就涉及到資料遷移,方法是:

docker stop當前 registry 容器。

啟動新版本容器並 mount 原有 volume。

docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:latest

當然,在啟用新容器前要確保新版本的預設資料路徑是否發生變化。

銷毀

可以刪除不再需要的 volume,但一定要確保知道自己正在做什麼,volume 刪除後資料是找不回來的。

docker 不會銷毀 bind mount,刪除資料的工作只能由 host 負責。對於 docker managed volume,在執行docker rm刪除容器時可以帶上-v引數,docker 會將容器使用到的 volume 一併刪除,但前提是沒有其他容器 mount 該 volume,目的是保護資料,非常合理。

如果刪除容器時沒有帶-v呢?這樣就會產生孤兒 volume,好在 docker 提供了 volume 子命令可以對 docker managed volume 進行維護。請看下面的例子:

容器 bbox 使用的 docker managed volume 可以通過docker volume ls檢視到。

刪除 bbox:

因為沒有使用-v,volume 遺留了下來。對於這樣的孤兒 volume,可以用docker volume rm刪除:

如果想批量刪除孤兒 volume,可以執行:

docker volume rm $(docker volume ls -q)

本章我們學習了以下內容:

docker 為容器提供了兩種儲存資源:資料層和 data volume。

資料層包括映象層和容器層,由 storage driver 管理。

data volume 有兩種型別:bind mount 和 docker managed volume。

bind mount 可實現容器與 host 之間,容器與容器之間共享資料。

volume container 是一種具有更好移植性的容器間資料共享方案,特別是 data-packed volume container。

最後我們學習了如何備份、恢復、遷移和銷毀 data volume。

不知大家發現沒有,這章我們學習的只是單個 docker host 中的儲存方案。而跨主機儲存也是乙個重要的主題,當然也更複雜,我們會在容器高階技術章節詳細討論。

下一節我們便開始高階知識部分的學習,首先討論如何高效管理多個 docker 主機。

volume 生命週期管理

data volume 中存放的是重要的應用資料,如何管理 volume 對應用至關重要。前面我們主要關注的是 volume 的建立 共享和使用,本節將討論如何備份 恢復 遷移和銷毀 volume。備份因為 volume 實際上是 host 檔案系統中的目錄和檔案,所以 volume 的備份實際上是...

elasticsearch生命週期管理

使用索引生命週期管理實現熱溫冷架構 官方文件 elasticsearch 集群從 3 節點擴容到溫熱架構的搭建攻略 1 當索引達到約定大小 索引文件數量達到約定數量,自動建立新的索引 2 安裝指定週期 1 天,1 周,1 個月 建立索引,將之前的索引存檔 3 強制刪除過期的索引,以達到保留一定日期範...

React 生命週期 生命週期方法

生命週期 掛載 更新 解除安裝 元件被建立 執行初始化 並被掛載到dom中,完成元件的第一次渲染 constructor props getderivedstatefromprops props,state render componentdidmount 元件被建立時會首先呼叫元件的構造方法,接受...