Docker 數據卷-Docker容器數據持久化方式

以tomcat爲例,如果咱們須要啓動一個docker tomcat 容器,並將咱們的工程放進tomcat啓動html

在沒有數據卷的狀況下,咱們所採用的方式:web

利用dockerfile將工程拷貝到tomcat 的 webapps目錄下建立一個新的鏡像,而後經過這個新的鏡像來建立容器並啓動,以此部署。docker

這種方式當然好用,可是卻須要建立新的鏡像,假如須要部署新的工程,又要建立新的鏡像。很麻煩ubuntu

並且,這種方式會形成重複寫的問題,就是咱們的工程文件實質上在docker容器和宿主機上寫入了兩次。形成性能損耗。tomcat

還有一個最問題就是,當咱們在啓動的工程中進行,將文件上傳到服務器的操做,實際上咱們的文件時上傳到了docker容器中,而當容器被刪除時,咱們所上傳的文件就丟失了。這就形成了數據沒法持久化的問題。服務器

那麼數據卷是如何解決這個問題的呢?app

首先演示一下數據卷的使用方式:webapp

建立 index.html 文件,並寫入 hello Docker!性能

root@ubuntu_server:/usr/local/docker/tomcat/ROOT# echo hello Docker! >index.html

啓動以數據卷方式啓動官方tomcat鏡像spa

docker run -p8082:8080 -d --name tomcat4 -v /usr/local/docker/tomcat/ROOT:/usr/local/tomcat/webapps/ROOT tomcat:jdk8

如上命令中 能夠看到 同以往啓動docker容器的命令不一樣之處在於 加了 這串 -v /usr/local/docker/tomcat/ROOT:/usr/local/tomcat/webapps/ROOT

這就是數據卷的使用方式,經過這串命令,咱們將tomcat容器中的webapps/ROOT 目錄內容,替換爲 咱們這宿主機上建立的/ROOT 目錄內容。

實際上也沒有替換隻是將宿主機上這個文件夾建立爲數據卷,而後將 tomcat容器上的/ROOT目錄指向了這個數據卷。

經過這種方式,當咱們修改了容器上該目錄內容時,數據卷的內容也會改變,這就實現了容器數據的持久化。

相關文章
相關標籤/搜索