我們在使用docker 的時候,會產生很多資料,比如web伺服器啊,資料庫之類的,有時我們還需要備份或複製這些資料,這就需要涉及到docker的資料管理了。
docker容器中管理資料主要分兩種:
資料卷是乙個可供容器使用的特殊目錄,它會繞過檔案系統,可以提供很多有用的特性:
資料卷的使用類似於linux下對目錄或檔案進行mount操作。
在用docker run命令的時候,使用-v標記可以在容器中建立乙個資料卷,多次使用該引數可以建立多個資料卷。
[plain]view plain
copy
也可以直接指定掛載乙個本地已有目錄到容器中作為資料卷,同樣使用-v引數,依然是剛才的例子:
[plain]view plain
copy
這個本地目錄的路徑必須是絕對路徑,如果目錄不存在,會被自動建立。
docker掛載資料卷的預設許可權是讀寫(rw),我們也可以指定為唯讀(ro):
[plain]view plain
copy
加了唯讀後,容器內掛載的資料卷資料是無法修改的。
-v標記也可以從主機掛載單個檔案到容器中作為資料卷。
比如需要記錄在容器中輸入過的歷史命令:
[plain]view plain
copy
docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
docker映象是如此的方便,針對以上的資料管理,也提供了乙個普通的容器:資料卷容器。
他可以使容器間共享一些持續性的資料變得更加簡單。
使用步驟:
[plain]view plain
copy
docker run -it -v /dbdata --name dbdata ubuntu
[plain]view plain
copy
docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu
此時db1和db2都掛載同乙個資料捲到相同的/dbdata目錄下。三個容器任意乙個在該目錄的資料修改,其他容器都能看到。
可以多次使用--volumes-from引數來從多個容器掛載多個資料卷。也可以從其他已經掛載了容器卷的容器來掛載資料卷:
[plain]view plain
copy
docker run -d --name db3 --volumes-from db1 training/postgres
如果刪除了掛載的容器(包括dbdata、db1、db2),資料卷並不會被自動刪除。
如果需要刪除乙個資料卷,必須在刪除最後乙個還掛載它的容器時,顯示使用docker rm -v 來指定同時刪除關聯的容器。
可以利用資料卷容器對其中的資料卷進行備份、恢復,以實現資料的遷移。
備份
備份dbdata資料卷容器中資料卷命令如下:
[plain]view plain
copy
docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata
解釋: 恢復
恢復資料到容器的操作:
[plain]view plain
copy
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
[plain]view plain
copy
docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
docker為資料管理提供了充分的支援,並且,使用資料卷容器是乙個不錯的選擇。
Docker 基礎 資料管理
使用者在使用 docker 的過程中,往往需要能檢視容器內應用產生的資料,或者需要把容器內的資料進行備份,甚至多個容器之間進行資料的共享,這必然涉及容器的資料管理操作。容器中管理資料主要有兩種方式 資料卷 data volumes 資料卷容器 data volume containers 資料卷是乙...
Docker 基礎 資料管理
docker 基礎 資料管理 使用者在使用 docker 的過程中,往往需要能檢視容器內應用產生的資料,或者需要把容器內的資料進行備份,甚至多個容器之間進行資料的共享,這必然涉及容器的資料管理操作。容器中管理資料主要有兩種方式 資料卷 data volumes 資料卷容器 data volume c...
Docker 基礎 資料管理
使用者在使用 docker 的過程中,往往需要能檢視容器內應用產生的資料,或者需要把容器內的資料進行備份,甚至多個容器之間進行資料的共享,這必然涉及容器的資料管理操作。容器中管理資料主要有兩種方式 資料卷 data volumes 資料卷容器 data volume containers 資料卷是乙...