1. 程式人生 > >快速入門Docker---Docker容器的資料卷和資料卷容器

快速入門Docker---Docker容器的資料卷和資料卷容器

Docker容器的資料卷

Docker的生存週期通常和其執行的程式相一致,但是對資料的要求是持久的,另一方面,dokcer容器之間也需要共享資料的渠道。

Data Volume是一種經過特殊處理的目錄,可以繞過聯合檔案系統,為一個或多個容器提供服務。

Data Volume設計的目的在於資料的永久化,它完全獨立與容器的生存週期,因此,Docker不會再容器刪除時刪除其掛載的資料卷,

也不會存在類似的垃圾回收機制,對容器引用的資料捲進行處理。

docker run -it -v [host-dir]:[containter-dir]:ro|rw
      host-dir:表示 Host上的目錄,如果不存在,Docker會自動建立目錄
      containter-dir:表示容器內部定義的目錄,如果不存在,Docker會自動建立目錄
      ro|rw :用於控制卷的讀寫許可權
當不指定 host-dir時,從而在容器內部建立目錄。
docker run -it -v /volumn centos  /bin/bash

實際上Docker會在Host的 /var/lib/docker/volumns 目錄中隨機的生存一個目錄,然後去掛載 /volume。


通過Host訪問容器中建立的 test 檔案


這種方式建立的資料卷,如果沒有別的容器引用這個資料卷,當容器刪除後,對應的Host目錄也會刪除。【從書上看到的,但是自己試驗的結果是這樣子】

一樣的方法建立了三個容器,在容器中都增加了資料卷,沒有指定Host目錄,把三個容器最後都刪除掉後,檢視/var/lib/docker/volumns。發現臨時檔案還存在。裡邊的資料還在。

指定Host目錄

docker run -it --name test -v /datavolumn:/data centos /bin/bash

在容器的Data Volumn中寫入資料

在Host中檢視和Docker共享的資料

刪除容器test 後,檢視資料依然存在。


Docker的資料卷容器

一個命名的容器掛載資料卷,其它容器通過掛載這個容器實現資料共享,掛載資料卷的容器,就叫做資料卷容器。

如果使用者想在容器之間共享一些持續更新的資料,最簡單的方法是使用資料卷容器。資料卷容器其實就是一個普通的容器,專門用它提供資料卷供其它容器掛載使用。

docker run --volumes-from [CONTAINER NAME]