在生產環境中使用 docker,往往需要對資料進行持久化,或者需要在多個容器之間進行資料共享,這必然涉及容器的資料管理操作。容器中的管理資料主要有兩種方式 :
資料卷 ( data volumes ) 是乙個可供容器使用的特殊目錄,它將主機作業系統目錄直接對映進容器,類似於 linux 中的 mount行為 。
資料卷可以提供很多有用的特性 :
docker 提供了 volume 子命令來管理資料卷,如下命令可以快速在本地建立乙個資料卷:
docker volume create -d local test
此時 ,檢視/var/lib/docker/volumes 路徑下,會發現所建立的資料卷位置 :
除了 create 子命令外, docker volume 還支援 inspect (檢視詳細資訊)、 ls (列出已有資料卷)、 prune (清理無用資料卷)、 rm (刪除資料卷)等。
除了使用 vo lume 子命令來管理資料捲外,還可以在建立容器時將主機本地的任意路徑掛載到容器內作為資料卷,這種形式建立的資料卷稱為繫結資料卷 。
在用 docker [container] run命令的時候,可以使用 -mount 選項來使用資料卷。
-mount 選項支援三種型別的資料卷,包括 :
本地目錄的路徑必須是絕對路徑,容器內路徑可以為相對路徑 。 如果目錄不存在, docker 會自動建立 。
docker 掛載資料卷的預設許可權是讀寫( rw ) ,使用者 也可以通過 ro 指定為唯讀 :
加了:ro 之後,容器內對所掛載資料卷內的資料就無法修改了 。
如果直接掛載乙個檔案到容器,使用檔案編輯工具,包括 vi 或者 sed - - in place的時候,可能會造成檔案 inode 的改變 。 從 docker 1.1.0 起,這會導致報錯誤資訊 。 所以推薦的方式是直接掛載檔案所在的目錄到容器內。
如果使用者需要在多個容器之間共享一些持續更新的資料,最簡單的方式是使用資料卷容器 。 資料卷容器也是乙個容器,但是它的目的是專門提供資料卷給其他容器掛載。
首先,建立乙個資料卷容器 dbdata , 並在其中建立乙個資料卷掛載到/dbdata :
docker run -it -v /dbdata --name dbdata ubuntu
然後,可以在其他容器中使用--volumes-from 來掛載 dbdata 容器中的資料卷,例如建立 dbl 和 db2 兩個容器,並從 dbdata 容器掛載資料卷:
docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu
此時, 容器 dbl 和 db2 都掛載同乙個資料捲到相同的/dbdata 目錄,三個容器任何一方在該目錄下的寫人,其他容器都可以看到 。例如,在 dbdata 容器中建立乙個 test 檔案:
可以多次使用--volumes-from 引數來從多個容器掛載多個資料卷,還可以從其他已經掛載了容器卷的容器來掛載資料卷 :
docker run -it --name db3 --volumes-from db1 ubuntu
使用--volumes-from 引數所掛載資料卷的容器自身並不需要保持在執行狀態。
如果刪除了掛載的容器(包括 dbdata 、 db1和 db2 ),資料卷並不會被自動刪除。 如果要刪除乙個資料卷,必須在刪除最後乙個還掛載著它的容器時顯式使用 docker rm -v 命令來指定同時刪除關聯的容器 。
可以利用資料卷容器對其中的資料卷進行備份、恢復,以實現資料的遷移 。
使用下面的命令來備份 dbdata 資料卷容器內的資料卷 :
Docker 資料管理
1.在容器中管理資料主要有兩種方式 資料卷 data volumes 資料卷容器 data volume containers 資料卷資料卷是乙個可供乙個或多個容器使用的特殊目錄,它繞過 ufs,可以提供很多有用的特性 資料卷可以在容器之間共享和重用 對資料卷的修改會立馬生效 對資料卷的更新,不會影...
Docker 資料管理
容器中管理資料主要有兩種方式 1 資料卷 data volumes 容器內的資料直接對映到宿主機,也就是使用宿主機的目錄作為根目錄,容器裡的目錄對映到根目錄,如下例1 2 資料卷容器 data volume containers 使用特定的容器維護資料卷,也就是使用乙個容器的目錄作為根目錄,另乙個容...
Docker資料管理
使用docker過程中,需要能檢視容器內應用產生的資料,或需要將容器內的資料進行備份,甚至在多個容器之間進行資料的共享,這些都將涉及容器資料管理的操作 容器中管理資料主要的兩種形式 1 資料卷 data volumes 2 資料卷容器 data volume containers 1 資料卷 資料卷...