述
數(shù)據(jù)卷容器就是一個專門用來掛載數(shù)據(jù)卷的容器,該容器主要是供其他容器引用和使用,所謂的數(shù)據(jù)卷容器,實際上就是一個普通的容器.
創(chuàng)建數(shù)據(jù)卷容器
命令如下:
docker run -tid -v /usr/share/nginx/html/ --name mydata ubuntu
就是運行了一個ubuntu容器,然后掛載了/usr/share/nginx/html/
這個目錄
引用容器
使用如下命令引用數(shù)據(jù)卷容器:
docker run -tid --volumes-from mydata -p 80:80 --name nginx1 nginx
docker run -tid --volumes-from mydata -p 81:80 --name nginx2 nginx
image
執(zhí)行完畢后,剛剛運行的兩個nginx容器就都掛載了同一個數(shù)據(jù)卷到usr/share/nginx/html/
目錄下面,三個容器中,任意一個修改了該目錄下的文件,其他兩個都能看到變化
可以用docker inspect
命令去查看這三個容器的詳情,關(guān)于數(shù)據(jù)卷的部分如下:
image
image
image
從圖中可以看到,三個容器的數(shù)據(jù)卷的描述都是一致的
注意事項
這里有幾點需要注意的地方
- 可以多次使用
--volumes-from
參數(shù)來從多個容器掛載多個數(shù)據(jù)卷,還可以從其他已經(jīng)掛載了容器卷的容器來掛載數(shù)據(jù)卷. - 使用
--volumes-from
參數(shù)所掛載數(shù)據(jù)卷的容器自身并不需要保持在運行狀態(tài) - 如果刪除了掛載的容器(包括mydata、nginx1和nginx2),數(shù)據(jù)卷并不會被自動刪除.如果要刪除一個數(shù)據(jù)卷,必須在刪除最后一個還掛載著它的容器時顯式使用
docker rm -v
命令來指定同時刪除關(guān)聯(lián)的容器.
數(shù)據(jù)備份
利用數(shù)據(jù)卷容器可以實現(xiàn)數(shù)據(jù)的備份與恢復(fù),備份命令如下:
docker run mydata --name worker --privileged=true -v /usr/docker/backup/:/backup/ ubuntu tar cvf /backup/backup.tar /usr/share/nginx/html/
-
--volumes-from
連接待備份的容器 -
-v
用來掛載數(shù)據(jù)卷到容器的/backup/
目錄下面 - 最后是個
tar
命令,將容器中/usr/share/nginx/html
目錄下的內(nèi)容備份到/backup
目錄下的backup.tar文件中,由于
已經(jīng)設(shè)置將宿主機的/usr/docker/backup/
目錄映射到容器的/backup目錄,因為備份在容器/backup目錄下的壓縮文件在當(dāng)前目錄下可以立馬看到
執(zhí)行如下:
image
可以看到backup.tar就有了已經(jīng),然后打開其實就是/usr/share/nginx/html
目錄及內(nèi)容,至此備份就完成了
數(shù)據(jù)恢復(fù)
步驟如下
創(chuàng)建容器
首先需要創(chuàng)建一個容器,這個容器就是要使用恢復(fù)的數(shù)據(jù)的容器,這里就再創(chuàng)建一個nginx容器了,命令如下:
docker run -itd -p 82:80 -v /usr/share/nginx/html/ --name nginx3 nginx
容器名稱是nginx3,然后掛載了一個數(shù)據(jù)卷
恢復(fù)
創(chuàng)建一個臨時容器,如下:
docker run --volumes-from nginx3 -v $(pwd):/backup nginx tar xvf /backup/backup.tar
- 首先還是使用
--volumes-from
參數(shù)連接上備份容器,即第一步創(chuàng)建出來的nginx3. - 然后將當(dāng)前目錄映射到容器的/backup目錄下.
- 然后執(zhí)行解壓操作,將backup.tar文件解壓.解壓文件位置描述是一個容器內(nèi)的地址,但是該地址已經(jīng)映
射到宿主機中的當(dāng)前目錄了,因此這里要解壓縮的文件實際上就是宿主機當(dāng)前目錄下的文件.
image
至此,數(shù)據(jù)恢復(fù)就完成了