在使用docker過程中,往往需要能檢視容器內應用生產的資料,或者需要把容器內的資料進行備份,甚至多個容器之間進行資料的共享,這必然涉及到容器的資料管理操作。
容器中管理資料主要有兩種方式:
**資料卷(data volumes)
資料卷容器(data volume container)**
定義:乙個可供容器使用的特殊目錄,它繞過檔案系統,提供很多有用的特性
特性:
資料卷可以在容器之間共享和重用
對資料卷的修改會立馬生效
對資料卷的更新,不會影響映象
捲會一直存在直到沒有容器使用
在容器內部建立乙個資料卷
用docker run的時候,使用-v標記可以在容器內建立乙個資料卷。多次使用-v標記可以建立愛你多個資料卷。
加了:ro之後容器內掛載的資料卷的資料就無法修改了
也可以掛載乙個本地註記檔案作為資料卷
如果使用者需要在容器之間共享一些持續更新的資料,最簡單的方式是使用資料卷容器。資料卷容器其實是乙個普通的容器,專門用它提供資料卷供其他容器掛載使用。
方法如下:
首先建立乙個資料卷容器dbdata,並在其中建立乙個資料卷掛載到/dbdata:
docker run -it -v /dbdata --name dbdata ubuntu
檢視/dbdata目錄:ls
然後可以在其他容器中使用–volumes-from來掛載dbdata容器中的資料卷,例如建立db1和db2兩個容器,並從dbdata容器掛載資料卷:
docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu
此時db1和db2都掛載同乙個資料捲到相同/dbdata目錄,三個容器任何一方在該目錄下的寫入,其他容器都看得到。
例如在dbdata容器中建立乙個test檔案:
cd /dbdata
touch test
在db1容器內檢視它 ls dbdata/
結果:test
可以多次使用–volumes-from引數來從多個容器掛載多個資料卷。還可以從其他寂靜掛載了容器的容器來掛載資料卷
docker run -d --name db3 --volumes-from db1 training/postgres
注意使用–volums-from引數所掛載資料卷的容器自身不需要保持在執行狀態
如果刪除了掛載的容器,資料卷並不會被自動刪除。如果要刪除乙個資料卷,必須再刪除最後乙個還在掛載著它的容器時候顯式使用docker rm -v命令來指定同時刪除關聯的容器
6.3使用資料卷容器遷移資料
可以利用資料卷容器對其中的資料卷進行備份、恢復,以實現資料的遷移
備份 使用下面命令來備份dbdata資料卷容器內的資料卷:
docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata
這條命令的含義:
首先利用ubuntu映象建立乙個容器名字叫做worker。使用–volumes-from dbdata引數來讓worker容器掛載dbdata容器的資料卷(即dbdata資料卷);使用-v $(pwd):/dbdata 引數來掛載本地的當前目錄到worker容器的/backup目錄。
worker容器啟動後使用tar cvf /backup/backup.tar /dbdata命令來將/dbdata 下內容備份為容器內的/backup/backup.tar,即宿主主機當前目錄下的backup.tar
恢復 首先建立乙個帶有資料卷的容器dbdata2:
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
然後建立另乙個新的容器掛載dbdata2的容器,並使用untar解壓備份檔案到所掛載的容器卷中即可:
docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
Docker實戰 四 之Docker資料管理
在生產環境中使用docker的過程中,往往需要對資料進行持久化,或者需要在多個容器之間進行資料共享,這必然涉及到容器的資料管理操作。容器中管理資料主要有兩種形式 資料卷 容器內資料直接對映到本地主機環境 資料卷容器 使用特定容器維護資料卷 1.資料卷 資料卷是乙個可供容器使用的特殊目錄,它將主機作業...
Docker 資料管理
1.在容器中管理資料主要有兩種方式 資料卷 data volumes 資料卷容器 data volume containers 資料卷資料卷是乙個可供乙個或多個容器使用的特殊目錄,它繞過 ufs,可以提供很多有用的特性 資料卷可以在容器之間共享和重用 對資料卷的修改會立馬生效 對資料卷的更新,不會影...
Docker 資料管理
容器中管理資料主要有兩種方式 1 資料卷 data volumes 容器內的資料直接對映到宿主機,也就是使用宿主機的目錄作為根目錄,容器裡的目錄對映到根目錄,如下例1 2 資料卷容器 data volume containers 使用特定的容器維護資料卷,也就是使用乙個容器的目錄作為根目錄,另乙個容...