一、資料卷概念
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的資料卷,只要實現了容器繼承卷的規則,不管是在哪個容器或者宿主機上更新資料卷內容,都會同步其他幾個資料卷