淺談Docker數(shù)據(jù)持久化
容器中數(shù)據(jù)持久化主要有兩種方式:
- 數(shù)據(jù)卷(Data Volumes)
- 數(shù)據(jù)卷容器(Data Volumes Dontainers)
數(shù)據(jù)卷
數(shù)據(jù)卷是一個可供一個或多個容器使用的特殊目錄,可以繞過UFS(Unix File System)。
- 數(shù)據(jù)卷可以在容器之間共享和重用
- 對數(shù)據(jù)卷的修改會立馬生效
- 對數(shù)據(jù)卷的更新,不會影響鏡像
- 數(shù)據(jù)卷默認(rèn)會一直存在,即使容器被刪除
- 一個容器可以掛載多個數(shù)據(jù)卷
注意:數(shù)據(jù)卷的使用,類似于 Linux 下對目錄或文件進行 mount。
創(chuàng)建數(shù)據(jù)卷
示例:
docker run --name nginx-data -v /mydir nginx
執(zhí)行如下命令即可查看容器構(gòu)造的詳情:
docker inspect 容器ID
由測試可知:
- Docker會自動生成一個目錄作為掛載的目錄。
- 即使容器被刪除,宿主機中的目錄也不會被刪除。
刪除數(shù)據(jù)卷
數(shù)據(jù)卷是被設(shè)計來持久化數(shù)據(jù)的,因此,刪除容器并不會刪除數(shù)據(jù)卷。如果想要在刪除容器時同時刪除數(shù)據(jù)卷,可使用如下命令:
docker rm -v 容器ID
這樣既可在刪除容器的同時也將數(shù)據(jù)卷刪除。
掛載宿主機目錄作為數(shù)據(jù)卷
docker run --name nginx-data2 -v /host-dir:/container-dir nginx
這樣既可將宿主機的/host-dir路徑加載到容器的/container-dir中。
需要注意的是:
宿主機路徑盡量設(shè)置絕對路徑——如果使用相對路徑會怎樣?
- 測試給答案
如果宿主機路徑不存在,Docker會自動創(chuàng)建
TIPS
Dockerfile暫時不支持這種形式。
掛載宿主機文件作為數(shù)據(jù)卷
docker run --name nginx-data3 -v /文件路徑:/container路徑 nginx
指定權(quán)限
默認(rèn)情況下,掛載的權(quán)限是讀寫權(quán)限。也可使用:ro 參數(shù)指定只讀權(quán)限。
示例:
docker run --name nginx-data4 -v /host-dir:/container-dir:ro nginx
這樣,在容器中就只能讀取/container-dir中的文件,而不能修改了。
數(shù)據(jù)卷容器
如果有數(shù)據(jù)需要在多個容器之間共享,此時可考慮使用數(shù)據(jù)卷容器。
創(chuàng)建數(shù)據(jù)卷容器:
docker run --name nginx-volume -v /data nginx
在其他容器中使用-volumes-from 來掛載nginx-volume容器中的數(shù)據(jù)卷。
docker run --name v1 --volumes-from nginx-volume nginx docker run --name v2 --volumes-from nginx-volume nginx
這樣:
v1、v2兩個容器即可共享nginx-volume這個容器中的文件。
即使nginx-volume停止,也不會有任何影響。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
docker容器中布置靜態(tài)網(wǎng)站的實現(xiàn)
這篇文章主要介紹了docker容器中布置靜態(tài)網(wǎng)站的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Docker+keepalived+nginx實現(xiàn)主從熱備的方法示例
這篇文章主要介紹了Docker+keepalived+nginx實現(xiàn)主從熱備的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Docker網(wǎng)絡(luò)配置與自定義IP容器通信
IP地址是Docker容器在網(wǎng)絡(luò)中的唯一標(biāo)識,每個Docker都會被分配一個 IP,用于網(wǎng)絡(luò)通信,本文主要介紹了Docker網(wǎng)絡(luò)配置與自定義IP容器通信,感興趣的可以了解一下2024-03-03
超詳細(xì)Docker Desktop下安裝rocketmq的教程
這篇文章主要介紹了Docker Desktop下安裝rocketmq,本文內(nèi)容通過圖文操作命令給大家講解的非常詳細(xì),需要的朋友可以參考下2021-10-10

