Docker之資料管理

2021-08-28 16:29:55 字數 2408 閱讀 3852

容器中管理資料主要有兩種方法:

資料卷是乙個可供容器使用的特殊目錄,它繞過檔案系統,可以提供很多有用的特性:

資料卷的使用,類似於linux下對目錄或檔案進行mount操作。

在容器內建立乙個資料卷

-p是允許外部訪問容器需要暴露的埠

掛載乙個主機目錄作為資料卷

使用 -v標記也可以指定掛載乙個本地的已有目錄到容器中去作為資料卷:

如果使用者需要在容器之間共享一些持續更新的資料,最簡單的方式是使用資料卷容器。資料卷容器其實就是乙個普通容器,專門用它提供資料卷供其他容器掛載使用方法如下:

建立乙個資料卷容器dbdata,並在其中建立乙個資料卷掛載到/dbdata:

$ sudo docker run -it -v /dbdata --name dbdata ubuntu

root@999bdaf2ef16:/#

檢視/dbdata目錄:

$ root@999bdaf2ef16:/# ls

然後,可以在其他容器中使用–volumes-from 來掛載dbdata容器中的資料卷,例如建立db1和db2兩個容器,並從dbdata容器掛載資料卷:

$ sudo docker run -it --volumes-from dbdata --name db1 ubuntu

$ sudo docker run -it --volumes-from dbdata --name db2 ubuntu

此時,容器db1和db2都掛載同乙個資料捲到相同的/dbdata目錄。三個容器任何一方在該目錄下的寫入,其他容器都可以看到。

例如,在dbdata容器中建立乙個test檔案:

$ root@1443f3b0ae54:/# cd dbdata/

$ root@1443f3b0ae54:/dbdata# touch test

$ root@1443f3b0ae54:/dbdata# ls

test

在db1容器內檢視它:

$ sudo docker restart db1

$ sudo docker attach db1

$ root@4d5a3db07dff:/# cd dbdata/

$ root@4d5a3db07dff:/dbdata# ls

test

可以從其他已經掛載了容器卷的容器來掛載資料卷:

$ sudo docker run -d --name db3 --volumes-from db1 training/postgres

如果刪除了掛載的容器(包括dbdata,db1和db2),資料卷並不會被自動刪除。如果要刪除乙個資料卷,必須在刪除最後乙個還掛載著它的容器時顯式使用docker rm -v命令來指定同時刪除關聯的容器。

可以利用資料卷容器對其中的資料卷進行備份、恢復,以實現資料的遷移。

備份

使用下面的命令來備份dbdata資料卷容器內的資料卷:

$ sudo 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):/backup引數來掛載本地的當前目錄到worker容器的/backup目錄。

worker容器啟動後,使用 tar cvf /backup/backup.tar /dbdata命令來將/dbdata下內容備份為容器內的/backup/backup.tar,即宿主主機當前目錄下的backup.tar。

恢復

如果要恢復資料到乙個容器,可以按照下面的操作。首先建立乙個帶有資料卷的容器dbdata2:

$ sudo docker run -v /dbdata --name dbdata2 ubuntu /bin/bash

然後建立另乙個新的容器,掛載dbdata2的容器,並使用untar解壓備份檔案到所掛載的容器卷中即可:

$ sudo docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

Docker學習之資料管理

docker 資料管理 如何在 docker 內部以及容器之間管理資料,在容器中管理資料主要有兩種方式 資料卷 是乙個可供乙個或多個容器使用的特殊目錄,它繞過 ufs,可以提供很多有用的特性 注意 資料卷的使用,類似於 linux 下對目錄或檔案進行 mount,映象中的被指定為掛載點的目錄中的檔案...

Docker 資料管理

1.在容器中管理資料主要有兩種方式 資料卷 data volumes 資料卷容器 data volume containers 資料卷資料卷是乙個可供乙個或多個容器使用的特殊目錄,它繞過 ufs,可以提供很多有用的特性 資料卷可以在容器之間共享和重用 對資料卷的修改會立馬生效 對資料卷的更新,不會影...

Docker 資料管理

容器中管理資料主要有兩種方式 1 資料卷 data volumes 容器內的資料直接對映到宿主機,也就是使用宿主機的目錄作為根目錄,容器裡的目錄對映到根目錄,如下例1 2 資料卷容器 data volume containers 使用特定的容器維護資料卷,也就是使用乙個容器的目錄作為根目錄,另乙個容...