一.基本概念
數(shù)據(jù)卷:容器內(nèi)數(shù)據(jù)直接映射到本地主機(jī)環(huán)境
數(shù)據(jù)卷容器:使用特定容器維護(hù)數(shù)據(jù)卷
二 .相關(guān)操作
1.數(shù)據(jù)卷
(1)在容器內(nèi)創(chuàng)建一個數(shù)據(jù)卷
docker run -d -p --name 容器名(web) -v /目錄(webapp) 鏡像名(ubuntu)
使用ubuntu鏡像創(chuàng)建一個web容器,并創(chuàng)建一個數(shù)據(jù)卷掛載到容器的/webapp目錄下
(2)掛載一個主機(jī)目錄作為數(shù)據(jù)卷
docker run -d -p --name web -v /src/webapp:/opt/webapp:ro ubuntu
加載主機(jī)的/src/webapp目錄到容器的/opt/webapp目錄
# 加了:ro之后,容器內(nèi)掛載的數(shù)據(jù)卷的數(shù)據(jù)就無法修改。
(3)掛載一個本地主機(jī)文件作為數(shù)據(jù)卷(不推薦)
docker run --rm -it -v ~/.bash:history :/.bash_history ubuntu /bin/bash
2.數(shù)據(jù)卷容器
docker run -it -v /dbdata --name dndata ubuntu
創(chuàng)建一個數(shù)據(jù)卷容器dbdata,并創(chuàng)建數(shù)據(jù)卷掛載到/dbdata
docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db1 ubuntu
容器db1和db2都掛載同一個數(shù)據(jù)卷到相同的/dbdata目錄,三個容器任何一方在該目錄下寫入,其他容器都可看到
3.利用數(shù)據(jù)卷容器來遷移數(shù)據(jù)
(1)備份
docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata
使用--volumes-from dbdata參數(shù)來讓worker容器掛載dbdata容器的數(shù)據(jù)卷
使用-v $(pwd):/backup來掛載本地的當(dāng)前目錄到woker容器的/backup目錄
使用tar cvf /backup/backup.tar /dbdata命令來將/dbdata下內(nèi)容備份為容器內(nèi)的/backup/backup.tar
(2)恢復(fù)
docker run -v /dbdata --name dbdata2 ubuntu /bin/back
docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf