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