Docker容器的數據卷

一、數據卷概念

1、數據卷是宿主機中的一個目錄或文件

2、當容器目錄和數據卷目錄綁定後,對方的修改會立即同步

3、一個數據卷可以被多個容器同時掛載

4、一個容器也可以掛載多個數據卷

簡單理解:有點類似我們的Redis裡面的rdb和aof文件

 

二、數據卷的作用

1、容器數據持久化

2、外部機器和容器間接通訊

3、容器之間數據交換

三、配置數據卷

docker run -id --privileged=true -v /宿主機絕對路徑目錄:/容器內目錄 --name=容器名 鏡像名

註:文件目錄不存在時會自動創建文件目錄

 

 四、容器卷和主機互通互聯

1、在容器內/tmp/myhostdata目錄下創建文件1.txt,並向文件寫入內容,然後查看宿主機/myhostdata是否創建了同樣文件1.txt

 2、在宿主機內/myhostdata目錄下創建文件2.txt,並向文件寫入內容,然後查看容器/tmp/myhostdata目錄是否創建了同樣文件2.txt

 3、查看數據卷是否掛載成功

docker inspect 容器ID

 五、容器卷ro和rw讀寫規則

說明:默認情況下,容器卷是可讀可寫的,但是在特殊場景下,我們想要容器實例內部被限制,只能讀取不能寫,也就是容器內只能讀取宿主機文件數據,如果宿主機寫入內容,可以同步給容器內,容器可以讀取到。

# 可讀可寫
docker run -id --privileged=true -v /宿主機絕對路徑目錄:/容器內目錄:rw --name=容器名 鏡像名

# 只能讀不能寫
docker run -id --privileged=true -v /宿主機絕對路徑目錄:/容器內目錄:ro --name=容器名 鏡像名

六、容器卷之間的繼承

步驟一:容器1完成和宿主機的映射

 

 

步驟二:容器2繼承容器1的卷規則

docker run -it --privileged=true --volumes-from 父類  --name=u2 ubuntu

 

 

說明:當容器1掛掉之後,宿主機和容器2之間依舊可以正常同步數據卷內容,當容器1重啟之後,會自動同步宿主機和容器2的數據卷,只要實現了容器繼承卷的規則,不管是在哪個容器或者宿主機上更新數據卷內容,都會同步其他幾個數據卷

 

Tags: