1. 程式人生 > >docker學習總結六

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