Docker資料管理

2021-09-18 02:43:10 字數 2509 閱讀 5187

使用docker過程中,需要能檢視容器內應用產生的資料,或需要將容器內的資料進行備份,甚至在多個容器之間進行資料的共享,這些都將涉及容器資料管理的操作;

容器中管理資料主要的兩種形式:

(1)、資料卷(data volumes);

(2)、資料卷容器(data volume containers);

1、資料卷:

資料卷是乙個可供容器使用的特殊目錄,它繞過檔案系統,可以提供很多有用的特性:

i、資料卷可以在容器之間共享和重用;

ii、對資料卷的修改會立即生效;

iii、對資料卷的修改不會影響映象;

iv、捲會一直存在,直到沒有容器使用;

(1)、在容器內建立乙個資料卷:

//建立

$ docker volume create -d local docker_test

//檢視資料卷詳情

$ docker volume inspect docker_test

//列出已有資料卷

$ docker volume ls

//清理無用資料卷,謹慎操作

$ docker volume prune

//刪除資料卷

$ docker volume rm docker_test

//更多命令檢視

$ docker volume --help

(2)、繫結資料卷:

除了使用volume子命令來管理資料捲外,還可以在建立容器時將本地的任意路徑掛在到容器內作為資料卷,這種形式建立的資料卷稱之為繫結資料卷;

在使用docker run命令的時候,可以使用-mount選項來使用資料卷,-mount選項支援三種型別的資料卷:

i、volume:普通資料卷,對映到/var/lib/docker/volumes路徑下;

ii、bind:繫結資料卷,對映到主機指定路徑下;

iii、tmpfs:臨時資料卷,只存在於記憶體中;

2、資料卷容器:
如果使用者需要在多個容器之間共享一些需要持續更新的資料,最簡單的方式是使用資料卷容器。資料卷容器也是乙個容器,但是它的目的是專門提供資料卷給其他容器掛載。

(1)、建立乙個資料容器datacontainer,並在其中建立乙個資料卷掛載到/data-container;

$ docker run -it -v /data-container --name datacontainer ubuntu

//檢視/data-container目錄:

root@10fcd5ad0d7d:/# ls

(2)、在其他容器中使用--volumes-from來掛載datacontainer容器中的資料卷,建立c1、c2兩個容器,並從datacontainer容器掛載資料卷:

$ docker run -it --volumes-from datacontainer --name c1 ubuntu

$ docker run -it --volumes-from datacontainer --name c2 ubuntu

//檢視此時docker中的容器:

$ docker ps -a

(3)、此時容器c1和c2都掛載同乙個資料捲到相同的/data-container目錄,三個容器任何一方在該目錄下的寫入,其他兩個容器均可看到;

(4)、可以多次使用--volumes-from引數來從多個容器掛載多個資料卷,還可以從其他已經掛載了容器卷的容器來掛載資料卷;

$ docker run -d --name c3 --volumes-from /c1

注意:使用--volumes-from引數所掛載資料卷的容器自身並不需要保持在執行狀態

(5)、如果刪除了掛載的容器(datacontainer、c1和c2),資料卷並不會被自動刪除。如果要刪除乙個資料卷,必須在刪除最後乙個還掛載著它的容器時顯式使用docker rm -v命令來指定同時刪除關聯的容器;

3、利用資料卷容器來遷移資料:
可以利用資料卷容器對其中的資料卷進行備份、恢復,以實現資料的遷移。

(1)、備份:

使用如下命令備份datacontainer資料卷容器內的資料卷:

$ docker run --volumes-from datacontainer -v $(

pwd)

:/backup --name worker ubuntu tar cvf /backup/backup.tar /data-container

(2)、恢復:

首先建立乙個帶有資料卷的容器c5:

$ docker run -v /data-container --name c5 ubuntu

再建立另乙個新容器,掛載c5容器,並使用untar解壓備份檔案到所掛載的容器卷中:

$ docker run --volumes-from c5 -v $(

pwd)

:/backup busybox untar xvf /backup/backup.tar

參考《docker技術入門及實戰》

Docker 資料管理

1.在容器中管理資料主要有兩種方式 資料卷 data volumes 資料卷容器 data volume containers 資料卷資料卷是乙個可供乙個或多個容器使用的特殊目錄,它繞過 ufs,可以提供很多有用的特性 資料卷可以在容器之間共享和重用 對資料卷的修改會立馬生效 對資料卷的更新,不會影...

Docker 資料管理

容器中管理資料主要有兩種方式 1 資料卷 data volumes 容器內的資料直接對映到宿主機,也就是使用宿主機的目錄作為根目錄,容器裡的目錄對映到根目錄,如下例1 2 資料卷容器 data volume containers 使用特定的容器維護資料卷,也就是使用乙個容器的目錄作為根目錄,另乙個容...

Docker 資料管理

在生產環境中使用 docker,往往需要對資料進行持久化,或者需要在多個容器之間進行資料共享,這必然涉及容器的資料管理操作。容器中的管理資料主要有兩種方式 資料卷 data volumes 是乙個可供容器使用的特殊目錄,它將主機作業系統目錄直接對映進容器,類似於 linux 中的 mount行為 資...