docker之資料儲存

2021-08-13 04:58:48 字數 1885 閱讀 1614

docker映象是乙個唯讀的檔案系統,容器是映象的執行環境,即在映象基礎上再加一層可讀寫的層,因此所有容器中的資料寫入時均寫到容器中,會隨著容器的銷毀而消失。為確保容器可以儲存資料,docker引入資料卷volume來處理此情況。

volume就是目錄或者檔案,它可以繞過預設的聯合檔案系統,而以正常的檔案或者目錄的形式存在於宿主機上。

volume 儲存在宿主機的預設路徑為/var/lib/docker/volumes/。

資料卷分為唯讀和可讀寫兩種屬性,預設為可讀寫,在定義時新增ro則表明為唯讀。

資料卷有如下幾種:

l無名資料卷

docker會預設分配乙個唯一的名字。在compose檔案中定義時不寫冒號前的內容,就是無名資料卷。

l有名資料卷

在compose檔案中定義時冒號前的內容必須只是乙個名稱,不是路徑。

l對映資料卷

直接將宿主機的目錄、檔案對映到容器中。在compose檔案中定義時冒號前的內容必須是路徑名稱。

(1)   命令建立

docker volume  create   --name  yourname

建立後可以使用命令docker  volume  ls檢視到。

(2)   容器建立時指定

可以在docker  run  -v 來指定,格式為:a:/path_to_container,

如果a是乙個絕對路徑,則是乙個「對映資料卷」,如果a是乙個名稱,則是乙個有名資料卷,如果a為空則是乙個無名資料庫。

(3)   compose檔案指定

其格式與容器建立時非常類似,只是支援a為相對路徑。

可以直接在宿主機上檢視有名、無名資料庫內容,預設路徑為/var/lib/docker/volumes/。同時還需要檢視某容器當前正在使用的資料卷,可以使用docker  inspect container_name,返回資訊中的mounts就會顯示所有正在使用的資料卷內容。

比如mysql映象啟動的容器中,需要將mysql儲存的資料庫放置到資料卷中,必須支援資料庫的備份、恢復、遷移。

直接執行乙個docker 容器,並掛載需要操作的資料卷,然後對其進行備份即可。

恢復、遷移時操作類似。

可以使用命令docker  volume rm刪除資料卷,當且僅當此資料卷沒有容器引用時才可以刪除。

所有docker容器均使用compose來啟動,如此既可以減少輸入的命令引數,記錄所有的配置,同時在重啟時可以利用原來的容器,不會隨著容器建立銷毀導致容器越來越多。

對於某個應用來說,都有配置、資料兩個內容,配置區直接對映到當前compose目錄下的某個子目錄,如此可以動態修改應用的配置;資料區也對映到當前compose目錄下的某個子目錄,如此可以在宿主機上直接檢視應用日誌,比如nginx的日誌。

nginx:

restart:always

image:dockerreg.maxnetsys.com:5000/maxnet-nginx

ports:

-"5000:5000"

links:

-registry

volumes:

-./auth:/etc/nginx/conf.d/

-./auth/nginx.conf:/etc/nginx/nginx.conf:ro

-./log:/var/log/nginx

上述為nginx的乙個compose配置。定義了三個資料卷,當前目錄下的auth目錄對映到容器中的/etc/nginx/conf.d,如此nginx容器可以直接使用宿主機的這些內容,對於nginx.conf是唯讀狀態對映到nginx容器,log目錄下記錄了nginx容器的所有日誌。

docker容器資料儲存之 volume 詳解

預設容器的資料的讀寫發生在容器的儲存層,當容器被刪除時其上的資料將會丟失。所以我們應該盡量保證容器儲存層不發生寫操作,為了實現資料的持久化儲存我們需要選擇一種方案來儲存資料,當前有以下幾種方式 無論你選擇哪種mount型別,從container內部看沒有區別,它們都是目錄或者檔案。資料都是寄存在宿主...

docker中資料儲存

docker中資料儲存 資料卷,是將宿主機上的目錄掛載到容器中去,有助於資料持久化。資料卷特點 在容器啟動初始化時,如果容器使用的宿主機掛載點有資料,這些資料就會拷貝到容器中。資料卷可以在容器直接共享和重用。可以直接對資料捲裡的內容進行修改。資料卷的變化不會影響映象的更新。捲會一直存在,即使掛載資料...

docker資料卷儲存

1.為什麼要使用docker資料卷 資料卷的作用 1 持久化容器執行過程中產生的資料檔案 2 實現多個容器間的檔案共享。正常情況下,刪除容器,容器中所有的檔案也會被刪除。2.常見的docker資料卷命令 建立乙個資料卷 docker volume create 檢視資料卷列表 docker volu...