Docker学习(六)-----Docker数据卷
十.Docker數(shù)據(jù)卷
問題:通過鏡像創(chuàng)建一個容器,容器一旦被銷毀,則容器內(nèi)的數(shù)據(jù)將一并被刪除,但有些情況下,通過服務(wù)器上傳的圖片出會丟失。容器中的數(shù)據(jù)不是持久化狀態(tài)的.
那有沒有一種獨(dú)立于容器,提供持久化并能服務(wù)于多個容器的東西呢?
10.1什么是數(shù)據(jù)卷
數(shù)據(jù)卷:是一個可供一個或多個容器使用的特殊目錄
特性:
- 數(shù)據(jù)卷可以在容器之間共享和重用
- 對數(shù)據(jù)卷的修改會立馬生效
- 對數(shù)據(jù)卷的更新,不會影響鏡像
- 數(shù)據(jù)卷默認(rèn)會一直存在,即使容器被刪除
10.2為什么需要數(shù)據(jù)卷?
這得從docker容器的文件系統(tǒng)說起,處于效率等一系列原因,docker容器的文件系統(tǒng)在宿主機(jī)上存在的方式很復(fù)雜,這會帶來下面幾個問題:
- 不能在宿主機(jī)上很方便地訪問容器中的文件
- 無法在多個容器之間共享數(shù)據(jù)
- 當(dāng)容器刪除時,容器中產(chǎn)生的數(shù)據(jù)將丟失
為了解決這些問題,docker引入了數(shù)據(jù)卷(volume)機(jī)制。數(shù)據(jù)卷是存在于一個或多個容器中的特定文件或文件夾,這個文件或文件夾以獨(dú)立于docker文件系統(tǒng)的形式存在于宿主機(jī)中
數(shù)據(jù)卷的最大特點(diǎn)是:其生存周期獨(dú)立于容器的生存周期
使用數(shù)據(jù)卷的最佳場景
- 在多個容器之間共享數(shù)據(jù),多個容器可以同時以只讀或者讀寫的方式掛載同一數(shù)據(jù)卷,從而共享數(shù)據(jù)卷中的數(shù)據(jù)
- 當(dāng)宿主機(jī)不能保證一定存在某個目錄或一些固定路徑的文件時,使用數(shù)據(jù)卷可以規(guī)避這種限制帶來的問題
- 當(dāng)你想把容器中的數(shù)據(jù)存儲在宿主機(jī)之外的地方時,比如遠(yuǎn)程主機(jī)上或云存儲上。
10.3數(shù)據(jù)卷應(yīng)用
#1 創(chuàng)建數(shù)據(jù)卷
docker volume create 數(shù)據(jù)卷名稱
#創(chuàng)建數(shù)據(jù)卷之后,默認(rèn)會存放到目錄 : /var/lib/docker/volume/數(shù)據(jù)卷名稱/_data目錄下
#2查看數(shù)據(jù)卷
docker volume inspect 數(shù)據(jù)卷名稱
#3 查看全部數(shù)據(jù)卷信息
docker volume ls
#4刪除數(shù)據(jù)卷
docker volume rm 數(shù)據(jù)卷名稱
#5應(yīng)用數(shù)據(jù)卷
#5.1當(dāng)你映射數(shù)據(jù)卷時,如果數(shù)據(jù)卷不存在,Docker會幫你自動創(chuàng)建
docker run -v 數(shù)據(jù)卷名稱:容器內(nèi)路徑 鏡像ID
#5.2直接指定一個路徑作為數(shù)據(jù)卷的存儲位置
docker run -v 路徑:容器內(nèi)部的路徑 鏡像ID
10.4案例1
數(shù)據(jù)卷方式
創(chuàng)建數(shù)據(jù)卷,將項(xiàng)目案例放入數(shù)據(jù)卷中,啟動Tomcat。來訪問并進(jìn)行查看(數(shù)據(jù)卷應(yīng)用5.1)
docker volume create vol_qfnj #創(chuàng)建數(shù)據(jù)卷
docker run -it --name tomcat-8080 -d -p 8080:8080 -v vol_qfnj:/usr/local/tomcat/webapps/ tomcat #運(yùn)行容器
路徑方式
將項(xiàng)目案例放入指定路徑中, -v數(shù)據(jù)卷。啟動Tomcat。來訪問并進(jìn)行查看(數(shù)據(jù)卷應(yīng)用5.2)
docker run -d -p 8080:8080 --name tomcat-8080 -v /opt/volumn_exam:/usr/local/tomcat/webapps tomcat
總結(jié)
以上是生活随笔為你收集整理的Docker学习(六)-----Docker数据卷的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 顺时针打印矩阵 python
- 下一篇: Docker学习(七)-----Dock