云計算核心技術(shù)Docker教程:Docker數(shù)據(jù)卷的使用
在生產(chǎn)環(huán)境中使用 Docker,要想實現(xiàn)數(shù)據(jù)的持久化(所謂Docker的數(shù)據(jù)持久化即數(shù)據(jù)不隨著Container的結(jié)束而結(jié)束)或者需要在多個容器之間進行數(shù)據(jù)共享,需要將數(shù)據(jù)從宿主機掛載到容器中,這就會涉及容器的數(shù)據(jù)管理操作。
Docker數(shù)據(jù)卷(data volume,注:位置在/var/lib/docker/volumes)是容器可以訪問,但是位置不在root文件系統(tǒng)中的一個目錄。為了能讓容器之間可以共享數(shù)據(jù),Docker讓“卷”(volume)可以繞過Docker鏡像的層疊機制。容器中所有對鏡像的改變?nèi)慷贾苯哟鎯?。每個容器都有固定的運行目錄在/var/lib/docker目錄下;而每個容器卷的數(shù)據(jù)則默認(rèn)單獨存儲在/var/lib/docker/volumes/目錄底下。 docker run命令的-v選項能夠?qū)崿F(xiàn)容器間數(shù)據(jù)卷中數(shù)據(jù)的互相拷貝。
數(shù)據(jù)卷Volume的基本使用:
1.管理卷
創(chuàng)建一個自定義容器卷
$ docker volume create my-vol
查看所有容器卷
$ docker volume ls
查看指定容器卷詳情信息
$ docker volume inspect my-vol
2.創(chuàng)建使用指定卷的容器
有了自定義容器卷,我們可以創(chuàng)建一個使用這個數(shù)據(jù)卷的容器,這里我們以nginx為例:
$ docker run -d -it --name=my-vol -p 8800:80 -v edc-nginx-vol:/usr/share/nginx/html nginx
其中,-v代表掛載數(shù)據(jù)卷,這里使用自定數(shù)據(jù)卷my-vol,并且將數(shù)據(jù)卷掛載到 /usr/share/nginx/html (這個目錄是yum安裝nginx的默認(rèn)網(wǎng)頁目錄)。
如果沒有通過-v指定,那么Docker會默認(rèn)幫我們創(chuàng)建匿名數(shù)據(jù)卷進行映射和掛載。
3.刪除一個卷
$ docker volume rm my-vol
Docker不會在容器被刪除后自動刪除數(shù)據(jù)卷,并且也不存在垃圾回收這樣的機制來處理沒有任何容器引用的數(shù)據(jù)卷,無主的數(shù)據(jù)卷可能會占據(jù)很多空間,所以要及時刪除。