溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

淺談Docker數(shù)據(jù)持久化

發(fā)布時間:2020-08-26 21:47:28 來源:腳本之家 閱讀:126 作者:周立 欄目:服務(wù)器

容器中數(shù)據(jù)持久化主要有兩種方式:

  1. 數(shù)據(jù)卷(Data Volumes)
  2. 數(shù)據(jù)卷容器(Data Volumes Dontainers)

數(shù)據(jù)卷

數(shù)據(jù)卷是一個可供一個或多個容器使用的特殊目錄,可以繞過UFS(Unix File System)。

  1. 數(shù)據(jù)卷可以在容器之間共享和重用
  2. 對數(shù)據(jù)卷的修改會立馬生效
  3. 對數(shù)據(jù)卷的更新,不會影響鏡像
  4. 數(shù)據(jù)卷默認會一直存在,即使容器被刪除
  5. 一個容器可以掛載多個數(shù)據(jù)卷

注意:數(shù)據(jù)卷的使用,類似于 Linux 下對目錄或文件進行 mount。

創(chuàng)建數(shù)據(jù)卷

示例:

docker run --name nginx-data -v /mydir nginx

執(zhí)行如下命令即可查看容器構(gòu)造的詳情:

docker inspect 容器ID

由測試可知:

  1. Docker會自動生成一個目錄作為掛載的目錄。
  2. 即使容器被刪除,宿主機中的目錄也不會被刪除。

刪除數(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è)置絕對路徑——如果使用相對路徑會怎樣?

  1. 測試給答案

如果宿主機路徑不存在,Docker會自動創(chuàng)建

TIPS

Dockerfile暫時不支持這種形式。

掛載宿主機文件作為數(shù)據(jù)卷

docker run --name nginx-data3 -v /文件路徑:/container路徑 nginx

指定權(quá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í)有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI