《Docker 》筆記 5 資料管理

2021-07-27 02:34:11 字數 2265 閱讀 1178

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

* 資料卷(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 資料卷 資料卷...