docker學習總結六

數據管理
數據卷:容器內數據直接映射到主機環境
數據卷容器: 使用特定容器維護數據卷
數據卷
1. 創建數據卷
使用docker run,用-v標記可以在容器內創建一個數據卷。多次重複使用-v標記可以在容器內創建多個數據卷
下面使用lxc/webapp鏡像創建一個容器,並創建一個數據卷掛載到容器的webapp目錄,並運行app.py程序:
$ docker run -d -P --name web -v /webapp lxc/webapp python app.py
2. 掛載主機目錄作爲數據卷(推薦)
$ docker run -d -P --name web -v /src/webapp:/opt/webapp lxc/webapp python app.py
dokcer掛載數據卷的默認權限是讀寫(rw),用戶也可以通過ro指定爲只讀:
$ docker run -d -P --name web -v /src/webapp:/opt/webapp:ro lxc/webapp python app.py
3. 掛載本地主機文件作爲數據卷(不推薦)
$ docker run --rm -it -v ~/.bash_hostory:/.bash_history ubuntu /bin/bash
這樣可以記錄在容器中輸入過的命令歷史了

數據卷容器
4. 創建數據容器並在其中創建一個數據卷掛載到 /dbdata
$ docker run -it -v /dbdata --name dbdata ubuntu
5. 使用--volumes-from掛載 數據卷容器中的數據卷
$ docker run -it --volumes-from dbdata --name db1 ubuntu
$ docker run -it --volumes-from dbdata --name db2 ubuntu
此時,db1和db2都掛載了同一個數據捲到相同的/dbdata目錄。三個容器任何一方在該目錄下寫入,其他容器都可見。
也可以從已經掛載了容器卷的容器來掛載數據卷。
$ docker run -d --name db3 --volumes-from db1 ubuntu
使用--volumes-from 參數所掛載數據卷的容器自身並不需要保持運行狀態。
注意:刪除掛載了數據卷的容器並不能刪除數據卷,可以再刪除最後一個還掛載這數據卷的容器時使用命令docker rm -v 容器ID
利用數據卷容器遷移數據

6. 備份
$ docker run --volumes-from dbdata -v $(pwd) :/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata
這條命令的意思是利用ubuntu鏡像創建一個容器並命名worker,並且從dbdata容器掛載數據卷,-v 把容器的/backup目錄掛載到宿主機當前目錄,在容器運行後把 /backup下的backup.tar 解壓到/dbdata目錄下
7. 恢復
將數據恢復到另一個容器
$ docker run -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar

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