容器中管理資料主要有兩種方式:
* 資料卷(data volumes)
* 資料卷容器(data volume container是)
6.1 資料卷
資料卷是乙個可供容器使用的特殊目錄,它繞過檔案系統。
特性:
* 資料卷可在容器間共享和重用。
* 對資料卷的修改會立即生效。
* 對資料卷的更新,不影響映象。
* 捲會一直存在,直到沒有容器使用。
資料卷的使用,類似於linux下對目錄或檔案進行mount操作。
在容器內建立乙個資料卷
用docker run命令時,使用 -v 標記可在容器內建立乙個資料卷。多次使用-v標記,可建立多個資料卷。
掛載乙個主機目錄作為資料卷
使用 -v 標記也可以指定掛載乙個本地已有目錄到容器中去作為資料卷。
本地目錄的路徑必須是絕對路徑,若目錄不存在,docker會自動建立。
docker掛載資料卷的預設許可權是讀寫(rw),使用者也可以通過ro指定為唯讀。
掛載乙個本地主機檔案作為資料卷
-v 標記也可從主機掛載單個檔案到容器中作為資料卷。
注意:若直接掛載乙個檔案,使用檔案編輯工具,包括vi或sed –inplace時,可能導致檔案inode改變。所以推薦的方式是直接掛載檔案所在的目錄。
6.2 資料卷容器
容器間共享一些持續更新的資料,最簡單的方式是使用資料卷容器。
資料卷容器就是乙個普通的容器,專門用於提供資料卷供其他容器掛載。
使用方法:
1. 建立乙個資料卷容器 dbdata,並在其中建立乙個資料卷掛載到 /dbdata:
$ sudo docker run -it -v /dbdata --name dbdata ubuntu
2. 在其他容器中使用 –volumes-from 來掛載dbdata容器中的資料卷。多次使用–volumes-from引數來從多個容器掛載多個資料卷。還可以從其他已掛載資料卷的容器來掛載資料卷。
如建立db1和db2兩個容器,並從dbdata容器掛載資料卷:
$ sudo docker run -it --volunmes-from dbdata --name db1 ubuntu
$ sudo docker run -it --volunmes-from dbdata --name db2 ubuntu
此時,容器db1、db2都掛載同乙個資料捲到相同的/dbdata目錄,三個容器任何一方在該目錄下的寫入,其他容器都可以看到。
要刪除乙個容器卷,必須在刪除最後乙個還掛載它的容器時顯式使用 docker rm -v 命令來指定同時刪除關聯的容器。
6.3 利用資料卷容器遷移資料
備份
使用下面命令來備份dbdata資料卷容器內的資料卷:
$ sudo docker run --volumes-from dbdata -v $(pwd):/backup --name workder ubuntu tar cvf /backup/backup.tar /dbdata
分析:
首先使用ubuntu映象建立乙個容器worker。使用--volumes-from dbdata
引數來讓worker容器掛載dbdata容器的資料卷;使用-v $(pwd):/backup
引數來掛載本地的當前目錄到worker容器的 /backup 目錄。
worker容器啟動後,使用了tar cvf /backup/backup.tar /dbdata
命令將 /dbdata 下內容備份為容器內 /backup/backup.tar,即宿主主機當前目錄下的backup.tar。
恢復
恢復資料到乙個容器,首先建立乙個帶有資料卷的容器dbdata2,然後建立另乙個新的容器,掛載dbdata2的容器,並使用untar解壓備份檔案到所掛載的容器卷即可:
$ sudo docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
$ sudo docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
Docker 資料管理
1.在容器中管理資料主要有兩種方式 資料卷 data volumes 資料卷容器 data volume containers 資料卷資料卷是乙個可供乙個或多個容器使用的特殊目錄,它繞過 ufs,可以提供很多有用的特性 資料卷可以在容器之間共享和重用 對資料卷的修改會立馬生效 對資料卷的更新,不會影...
Docker 資料管理
容器中管理資料主要有兩種方式 1 資料卷 data volumes 容器內的資料直接對映到宿主機,也就是使用宿主機的目錄作為根目錄,容器裡的目錄對映到根目錄,如下例1 2 資料卷容器 data volume containers 使用特定的容器維護資料卷,也就是使用乙個容器的目錄作為根目錄,另乙個容...
Docker資料管理
使用docker過程中,需要能檢視容器內應用產生的資料,或需要將容器內的資料進行備份,甚至在多個容器之間進行資料的共享,這些都將涉及容器資料管理的操作 容器中管理資料主要的兩種形式 1 資料卷 data volumes 2 資料卷容器 data volume containers 1 資料卷 資料卷...