Docker的volume捲 為了能持久話保存和共用容器的數據。 使用docker volume捲的兩種方式 1:數據捲 2:數據捲容器 1:數據捲 數據捲:數據捲會繞過docker 的ufs 直接寫在物理設備上,對數據捲的操作可以及時生效,並且數據捲是可以進行共用重用的,為一個或者多個容器提供訪問 ...
Docker的volume捲 為了能持久話保存和共用容器的數據。
使用docker volume捲的兩種方式
1:數據捲
2:數據捲容器
1:數據捲
數據捲:數據捲會繞過docker 的ufs 直接寫在物理設備上,對數據捲的操作可以及時生效,並且數據捲是可以進行共用重用的,為一個或者多個容器提供訪問。數據捲的存在的目的在於永久話保存docker的數據,數據捲獨立於容器的生命周期之外。不會因docker的變化兒產生變化
(1):掛載一個隨機名稱的目錄
我們在運行容器的時候 通過使用 -V 來添加 數據捲,也可以多次指定掛載多個。
運行一個主機名為 centos1 容器名為centos1 的容器
docker run -it -v /data -h centos1 --name centos1 centos
註:-v /data 我們掛載了一個名為data的數據捲 (-h centos1) 指定主機名
使用-v 時 docker 守護進程會自動幫助我們創建一個data文件.這時的data文件其實掛載了宿主機的文件我們來查看一下宿主機文件的地址:
推出容器查看centos1 的 配置信息
docker inspect centos1 找到Mounts 節點
Source 這裡就是對應的宿主機目錄隨機了一個名稱:預設是可讀寫的,我們不論是在宿主機中還是在容器寫入的任何信息,兩邊都可以進行查看。Volume 就是docker 的捲,代表目錄或者文件。
因為這裡的捲是掛載的宿主機的文件,所以不會隨著容器的銷毀而銷毀.
(2)掛載一個宿主機的文件或目錄
docker run -it -v /var/lib/docker/volumes:/volumes -h centos2 --name centos2 centos
-v /var/lib/docker/volumes:/volumes
上面的命令掛載了宿主機 /var/lib/docker/volumes 文件路徑:/volumes 容器的路徑。
看到已經掛載成功了,我們可以看多個容器我們可以共用一個文件。這樣就可以避免我們的數據配置。。。信息丟失,比如我們可以分成存放 程式,日誌,配置等信息
-v /var/lib/docker/volumes:/volumes:ro 可以設置只讀,預設是 rw讀寫
2:數據捲容器
(1):使用數據捲:
我們運行一個名為Centos3的容器,並且centos2 作為一個數據捲容器
docker run -it --volumes-from centos2 -h centos3 --name centos3 centos
參數: --volumes-from centos2 指定一個捲容器。
運行成功後我們查看一下centos3 是否共用了數據捲容器centos2的捲
上圖中我們可以看到,centos3和centos2共用了捲。
為什麼使用數據捲:
在生產測試環境中我們在使用的時候可以只創建一個容器,不運行任何程式,此容器的作用就是為了共用數據捲。這個容器就被稱為數據捲容器。
註意:在刪除掛載有數據捲容器的時候我們要加上 -v 選項 ,這樣才會刪除數據捲,不然出來不會刪除外,還會浪費磁碟空間
例如:Docker rm -v centos3 當我們刪除centos3 的時候,他使用的數據捲是不會被刪除的,因為當一個數據捲在被其他容器使用的時候是不會被刪除的。
(2):數據捲的備份
數據捲的備份是通過啟動一個新的容器,在新的容器中執行打包壓縮命令,來實現備份操作的。也就是說這個容器是可以執行後立即刪除的
執行下麵的命令進行備份:
docker run --rm --volumes-from centos2 -v /backup:/backup centos tar cvf /backup/volume.tar /volumes
備份完成我們查找一下備份
查看容器是否存在:
我們可以看到當容器執行完命令後就刪除了
命令選項作用:
--rm :容器運行後刪除
--volumes-from centos2 :備份數據捲容器掛載的所有數據捲
-v /backup:/backup : 備份後存放的地址
tar cvf /backup/volume.tar :執行備份並且指定備份的名稱
/volumes :數據捲容器centos2 掛載的數據捲目錄
有不足之處 希望大家指出相互學習,
本文原創:轉載請註明出處 謝謝!