Docker學習 八 Docker資料管理

2021-10-03 02:15:59 字數 2063 閱讀 4820

生產環境中使用docker的過程中,需要對資料進行持久化,或者需要在多個容器之間進行資料共享,這必然涉及容器的資料管理操作

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

1、資料卷:容器內資料直接對映到本地主機環境

2、資料卷容器:使用特定容器維護資料卷

資料卷是乙個可供容器使用的特殊目錄,它將主機作業系統目錄直接對映進容器,其特性包含

1、在容器內建立乙個資料卷

在用docker run命令的時候,使用-v標記可以在容器內建立乙個資料卷,多次重複使用-v標記可以建立多個資料卷

2、掛載乙個主機目錄作為資料卷(推薦)

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

這個功能在進行測試的時候十分方便,比如使用者可以將一些程式或資料放到本地目錄中,然後在容器內執行和使用。另外,本地目錄的路徑必須是絕對路徑,如果目錄不存在會自動建立

3、掛載乙個本地主機檔案作為資料卷(不推薦)

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

如果使用者需要在多個容器之間共享一些持續更新的資料,最簡單的方式是使用資料卷容器,資料卷容器也是乙個容器,但是它的目的是專門用來提供資料卷其他容器掛載

1、建立乙個資料卷容器,並建立乙個資料卷掛載到/dbdata

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

2、在其他容器中使用--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目錄。三個容器任何一方在該目錄下的寫入,其他容器都可以看到

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

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

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

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

1、備份

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

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

2、恢復

如果要將資料恢復到乙個容器,使用如下步驟:

第一、建立乙個帶有資料卷的容器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容器

1.容器檢視 已經啟動的容器 docker ps 所有的容器 docker ps a2.啟動容器相關引數 互動式容器 退出時容器處於停止狀態,無法使用 docker run it name mynginx nginx bin bash 退出當前容器 exit 守護式容器 埠88是宿主機的對映埠 do...

docker學習 docker安裝

1 解除安裝已經存在的docker 執行命令 yum remove docker docker client docker client latest docker common docker latest docker latest logrotate docker logrotate docke...

Docker學習 Docker映象

一 列出映象 命令 docker images optsions repositort a 標識列出所有 f 寫過濾條件 no trunc 不截斷id q 只顯示唯一id repository是倉庫名字 registry代表的是大庫 tag標籤名字 對應版本,id唯一標識 庫名字 標籤 對應乙個id...