使用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行為 資...