Docker 資料管理

2021-08-01 04:51:16 字數 1912 閱讀 7507

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

資料卷(data volumes)

資料卷容器(data volume containers)

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

資料卷可以在容器之間共享和重用

對資料卷的修改會立馬生效

對資料卷的更新,不會影響映象

捲會一直存在,直到沒有容器使用

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

建立乙個資料卷

在用 docker run 命令的時候,使用 -v 標記來建立乙個資料卷並掛載到容器裡。在一次 run 中多次使用

可以掛載多個資料卷。

*注意:也可以在 dockerfile 中使用 volume 來新增乙個或者多個新的卷到由該映象建立的任意容器。

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

使用 -v 標記也可以指定掛載乙個本地主機的目錄到容器中去。

docker 掛載資料卷的預設許可權是讀寫,使用者也可以通過 :ro 指定為唯讀。

掛載乙個本地主機檔案作為資料卷

-v 標記也可以從主機掛載單個檔案到容器中

$ sudo docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash

這樣就可以記錄在容器輸入過的命令了。

inode 的改變,從 docker 1.1 .0起,這會導致報錯誤資訊。所以最簡單的辦法就直接掛載檔案的父目錄。

資料卷容器

資料卷容器,其實就是乙個正常的容器,專門用來提供資料卷供其它容器掛載的。

首先,建立乙個命名的資料卷容器 dbdata:

sudo docker run -d -v /dbdata --name dbdata training/postgres echo data-only container

然後,在其他容器中使用 --volumes-from 來掛載 dbdata 容器中的資料卷

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

還可以使用多個 --volumes-from 引數來從多個容器掛載多個資料卷。也可以從其他已經掛載了資料卷的

容器來掛載資料卷。

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

*注意:使用 --volumes-from 引數所掛載資料卷的容器自己並不需要保持在執行狀態。

如果刪除了掛載的容器(包括 dbdata、db1 和 db2),資料卷並不會被自動刪除。如果要刪除乙個資料

卷,必須在刪除最後乙個還掛載著它的容器時使用 docker rm -v 命令來指定同時刪除關聯的容器。

利用資料卷容器來備份、恢復、遷移資料卷

首先使用 --volumes-from 標記來建立乙個載入 dbdata 容器卷的容器,並從本地主機掛載當前到容器的

/backup 目錄。

容器啟動後,使用了 tar 命令來將 dbdata 卷備份為本地的 /backup/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 資料管理

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

Docker資料管理

使用docker過程中,需要能檢視容器內應用產生的資料,或需要將容器內的資料進行備份,甚至在多個容器之間進行資料的共享,這些都將涉及容器資料管理的操作 容器中管理資料主要的兩種形式 1 資料卷 data volumes 2 資料卷容器 data volume containers 1 資料卷 資料卷...

Docker 資料管理

在生產環境中使用 docker,往往需要對資料進行持久化,或者需要在多個容器之間進行資料共享,這必然涉及容器的資料管理操作。容器中的管理資料主要有兩種方式 資料卷 data volumes 是乙個可供容器使用的特殊目錄,它將主機作業系統目錄直接對映進容器,類似於 linux 中的 mount行為 資...