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目录指向了这个数据卷。

经过这种方式,当咱们修改了容器上该目录内容时,数据卷的内容也会改变,这就实现了容器数据的持久化。

相关文章
相关标签/搜索