
?? 前言
上一篇文章講了 Docker 的數(shù)據(jù)卷:【Docker 那些事兒】容器數(shù)據(jù)卷的本手
?
本篇文章將繼續(xù)承接上一篇,講講數(shù)據(jù)卷的恢復(fù)與遷移,以及管理
1. 數(shù)據(jù)的恢復(fù)與遷移
容器對于宿主機來說就是一個進程,有時難免出現(xiàn)故障。
在生產(chǎn)環(huán)境中,人們很少會去修復(fù)一個容器,通常是將原來的容器刪除,并重新運行一個新的容器繼續(xù)提供服務(wù)。
這時就需要用到 Docker 數(shù)據(jù)卷的恢復(fù)與遷移技術(shù)。
?? 恢復(fù)數(shù)據(jù)卷
恢復(fù)數(shù)據(jù)卷是將備份數(shù)據(jù)恢復(fù)到原容器中。
在上一篇文章中已經(jīng)在宿主機中做好了數(shù)據(jù)備份,下面模擬數(shù)據(jù)丟失來對容器數(shù)據(jù)卷進行恢復(fù)。示例代碼如下??
以上示例為了模擬數(shù)據(jù)丟失,將容器中文件 /var/volume1/a.txt
與 var/volume2/b.txt
刪除。
下面進行數(shù)據(jù)恢復(fù),示例代碼如下??
以上示例通過創(chuàng)建新容器對數(shù)據(jù)卷容器進行掛載,并將宿主機數(shù)據(jù)目錄掛載到容器,再將解壓后的數(shù)據(jù)存放到指定路徑下。
下面進入容器查看數(shù)據(jù)是否成功恢復(fù),示例代碼如下??
從以上示例中可以看到,數(shù)據(jù)文件 a.txt 與 b.txt 都已經(jīng)成功恢復(fù)。
?? 遷移數(shù)據(jù)卷
遷移數(shù)據(jù)卷是將備份數(shù)據(jù)恢復(fù)到新建容器中。
新建容器并解壓備份文件到新的容器數(shù)據(jù)卷,示例代碼如下:
以上示例新建了容器 new-container,并掛載了數(shù)據(jù)卷目錄 volume1 與 volume2,但數(shù)據(jù)卷中并沒有數(shù)據(jù)。
下面使用 Ctrl+P+Q
組合鍵退出當(dāng)前容器終端,將備份數(shù)據(jù)遷移到容器 new-container 中,示例代碼如下:
從以上示例中可以看到,數(shù)據(jù)已經(jīng)遷移成功。
建議新容器創(chuàng)建時掛載的數(shù)據(jù)卷路徑與先前備份的數(shù)據(jù)卷路徑保持一致,否則會出現(xiàn)數(shù)據(jù)恢復(fù)不全的情況,示例代碼如下:
以上示例中,路徑?jīng)]有保持一致,備份之后發(fā)現(xiàn)只恢復(fù)了 volume1 中的數(shù)據(jù),volume2 中的數(shù)據(jù)沒有恢復(fù)。
為了避免這種情況的發(fā)生,可以修改 -C
參數(shù)后面的路徑,使數(shù)據(jù)正?;謴?fù),示例代碼如下:
以上示例通過修改路徑,使數(shù)據(jù)完整的備份到容器 new-container 中。
2. 管理數(shù)據(jù)卷
?? 與容器關(guān)聯(lián)
數(shù)據(jù)卷最大的優(yōu)勢是 可以用來做持久化數(shù)據(jù),它的生命周期是獨立的
Docker 不會在容器被刪除后自動刪除數(shù)據(jù)卷,也不存在類似垃圾回收的機制來處理沒有被任何容器使用的數(shù)據(jù)卷。
但難免會有無用的數(shù)據(jù)卷,用戶可以通過在刪除容器的命令中添加參數(shù),在刪除容器的同時刪除數(shù)據(jù)卷。
Docker數(shù)據(jù)卷可以通過命令與容器關(guān)聯(lián),刪除容器時,數(shù)據(jù)卷也隨之刪除。
docker rm -v
刪除容器時添加-v參數(shù)會將數(shù)據(jù)卷一并刪除。
docker run --rm
創(chuàng)建、運行容器時添加
--rm
參數(shù),容器運行結(jié)束時容器與數(shù)據(jù)卷會被一并刪除。
?
如果不對數(shù)據(jù)卷進行及時清理,/var/lib/Docker/volumes/
目錄下就會產(chǎn)生許多殘留目錄。
?
但刪除的數(shù)據(jù)卷是無法找回的,建議再三確認之后在執(zhí)行操作。
下面創(chuàng)建一個容器并掛載數(shù)據(jù)卷,再將容器刪除查看數(shù)據(jù),示例代碼如下:
以上示例中,將掛載了數(shù)據(jù)卷的容器刪除之后,容器掛載的數(shù)據(jù)卷還存在。
下面在刪除容器的同時添加 -v
參數(shù),刪除該容器的數(shù)據(jù)卷,示例代碼如下:
以上示例在刪除容器時添加了 -v
參數(shù),數(shù)據(jù)卷也同時被刪除,清理了無用的數(shù)據(jù)卷,節(jié)省了磁盤空間。
創(chuàng)建容器時,在命令中添加 --rm
參數(shù),終止容器時會自動刪除容器及數(shù)據(jù)卷,示例代碼如下:
以上示例在創(chuàng)建容器命令中添加了 --rm
參數(shù),并執(zhí)行了該命令。
下面通過另一個終端查看宿主機的掛載目錄,示例代碼如下:
上述示例中,容器創(chuàng)建成功,數(shù)據(jù)卷目錄也掛載成功。
下面通過 exit 命令退出終端,并再次查看宿主的掛載目錄,示例代碼如下:
以上示例中,使用 exit 命令退出容器之后,數(shù)據(jù)卷也被刪除。
?? 命令管理
Docker 中有專門的容器數(shù)據(jù)卷命令供用戶來管理容器數(shù)據(jù)卷。下面通過示例介紹容器數(shù)據(jù)卷命令的一些參數(shù)。
- create
創(chuàng)建數(shù)據(jù)卷。
示例代碼如下:
以上示例中通過在 docker volume 命令中添加 create 參數(shù),創(chuàng)建出了命名為 test 的新容器數(shù)據(jù)卷。
- ls
列出數(shù)據(jù)卷。
示例代碼如下:
以上示例通過 docker volume 命令添加 ls 參數(shù)查看數(shù)據(jù)卷,可以看到剛剛創(chuàng)建的test數(shù)據(jù)卷。
另外,在宿主機的掛載目錄中也可以查看數(shù)據(jù)卷信息,示例代碼如下:
上述示例通過宿主機掛載目錄查看容器數(shù)據(jù)卷,與數(shù)據(jù)卷目錄下查看到的結(jié)果相同。
- inspect
顯示一個或多個數(shù)據(jù)卷的詳細信息。
首先創(chuàng)建一個容器,并為其掛載剛剛創(chuàng)建的容器數(shù)據(jù)卷,示例代碼如下:
以上示例將剛剛創(chuàng)建的容器數(shù)據(jù)卷 test 作為新容器 test-container 的數(shù)據(jù)卷,
也就是將 test 數(shù)據(jù)卷在宿主機上的目錄 /var/lib/Docker/volumes/test/_data
掛載到容器內(nèi)的 /volume
中。
接著,通過命令查看容器 test-container 的數(shù)據(jù)卷信息,示例代碼如下:
上述示例通過查看容器掛載信息得知容器 test-container 成功掛載 test 數(shù)據(jù)卷。
另外,還可以在宿主機中使用 docker inspect 命令查看指定數(shù)據(jù)卷的信息,示例代碼如下:
- rm
刪除一個或多個數(shù)據(jù)卷。
首先將容器停止并刪除,再查看數(shù)據(jù)卷信息,示例代碼如下:
以上示例中,容器 test-container 已經(jīng)被刪除,但數(shù)據(jù)卷 test 仍然存在。
下面通過在命令中添加 rm 參數(shù)對數(shù)據(jù)卷 test 進行刪除并查看數(shù)據(jù)卷信息,示例代碼如下:
以上示例中,數(shù)據(jù)卷被成功刪除。
- prune
刪除所有未被使用的數(shù)據(jù)卷。
在前面的示例中可以看到,本地殘留了一些未被使用的數(shù)據(jù)卷,用戶可以使用一條命令將其刪除。示例代碼如下:
以上示例通過命令刪除了三個未使用的數(shù)據(jù)卷,釋放了 33B 的空間。
在執(zhí)行命令時,Docker 會詢問是否要刪除沒有被使用的數(shù)據(jù)卷,如果確定,在終端輸入"y" 即可,否則輸入"N"。
下面查看數(shù)據(jù)卷是否被成功刪除,示例代碼如下:
從以上示例中可以看到,沒有被使用的數(shù)據(jù)卷已經(jīng)被成功刪除,本地沒有數(shù)據(jù)卷。文章來源:http://www.zghlxwxcb.cn/news/detail-779688.html
3. 總結(jié)
這兩篇篇文章詳細全面地講解了:
?
使用 Docker 數(shù)據(jù)卷長久存儲容器數(shù)據(jù)、以 Docker 容器作為容器數(shù)據(jù)卷、備份 Docker 數(shù)據(jù)卷中的數(shù)據(jù)、恢復(fù) Docker 容器數(shù)據(jù)以及遷移和刪除 Docker 容器數(shù)據(jù)卷等數(shù)據(jù)卷相關(guān)知識。
?
相信大家已經(jīng)可以熟練運用容器數(shù)據(jù)卷技術(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-779688.html
到了這里,關(guān)于【Docker 那些事兒】容器數(shù)據(jù)卷的妙手的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!