Docker數據管理

容器中數據管理主要有兩種方式:
數據卷(Data Volumes):容器內數據直接映射到本地主機環境;
數據卷容器( Data Volume Containers)使用特定的容器維護數據卷。

數據卷

數據卷是一個可供容器使用的特殊目錄,他將主機操作系統目錄直接映射進容器,類似於Linux中的mount操作。
數據卷可以提供很多有用的特性,如下:
* 數據卷可以在容器之間共享和重用,容器間傳遞數據變的高效方便;
* 對數據卷內數據的修改會立馬生效,無論是容器內操作還是本地操作;
* 對數據卷的更新不影響鏡像,解耦了應用和數據;
* 卷會一直存在,知道沒有容器使用,可以安全地卸載它。

1、在容器內創建一個數據卷

在用docker run 命令的時候,使用-v標記可以在容器內創建一個數據卷。多次重複使用-v標記可以創建多個數據卷。
下面使用 training/webapp鏡像創建一個web容器,並創建一個數據卷掛載到容器的/webapp目錄:
docker run -d -P –name web -v /webapp training/webapp python app.py

2、掛載主機目錄作爲數據卷(推薦方式)

docker run -d -P –name web -v /src/webapp:/opt/webapp training/webapp python app.py
加載主機的/src/webapp目錄到容器的/opt/webapp目錄
docker run -d -P –name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py
設置爲只讀

3、掛載一個本地主機文件作爲數據卷

docker run -d -P –name web -v ~/.bash_history:/.bash_history ubuntu /bin/bash

數據卷容器

首先創建一個數據卷容器dbdata,並在其中創建一個數據卷掛載到/dbdata:
docker run -it -v /dbdata –name dbdata ubuntu
然後,可以在其他容器中使用-volumes-from來掛載dbdata容器中的數據卷,例如創建db1和sb2兩個容器,並從dbdata容器掛載數據卷:
docker run -it -volumes-from dbdata –name db1 ubuntu
docker run -it -volumes-from dbdata –name db2 ubuntu

利用數據卷容器來遷移數據

可以利用數據卷對其中的數據捲進行備份、恢復,以實現數據的遷移。

1、備份

docker run –volumes-from dbdata -v (pwd):/backupnameworkerubuntutarcvf/backup/backup.tar/dbdataubuntuworker使volumesfromdbdataworkerdbdatadbdata使v (pwd):backup 參數來掛載本地的當前目錄到worker容器的/backup目錄。
worker容器啓動後,使用了tar cvf /backup/backup.tar /dbdata命令將/dbdata下內容備份爲容器內的/backup/backup.tar,即宿主主機當前目錄下的buckup.tar。

2、恢復

首先創建一個帶有數據卷的容器dbdata2:
docker run -v /dbdata –name dbdata2 ubuntu /bin/bash
sudo docker run -itd -v /data –name data1 c9fc7f8eec37
然後創建另一個新的容器,掛載dbdata2的容器,並使用untar解壓備份文件到所掛載的容器卷中:
docker run –volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章