Docker 数据卷-Docker容器数据持久化方式

以tomcat为例,若是我们需要启动一个docker tomcat 容器,并将我们的工程放进tomcat启动

在没有数据卷的情况下,我们所采用的方式:

利用dockerfile将工程拷贝到tomcat 的 webapps目录下创建一个新的镜像,然后通过这个新的镜像来创建容器并启动,以此部署。

这种方式固然好用,但是却需要创建新的镜像,假如需要部署新的工程,又要创建新的镜像。很麻烦

而且,这种方式会造成重复写的问题,就是我们的工程文件实质上在docker容器和宿主机上写入了两次。造成性能损耗。

还有一个最问题就是,当我们在启动的工程中进行,将文件上传到服务器的操作,实际上我们的文件时上传到了docker容器中,而当容器被删除时,我们所上传的文件就丢失了。这就造成了数据无法持久化的问题。

那么数据卷是如何解决这个问题的呢?

首先演示一下数据卷的使用方式:

创建 index.html 文件,并写入 hello Docker!

[email protected]_server:/usr/local/docker/tomcat/ROOT# echo hello Docker! >index.html

启动以数据卷方式启动官方tomcat镜像

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

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



原文地址:https://www.cnblogs.com/yinjing/p/12292077.html

时间: 2024-10-13 12:39:41

Docker 数据卷-Docker容器数据持久化方式的相关文章

Docker 数据卷与容器互联(3)

title: Docker 数据卷与容器互联(3) date: 2018-12-15 14:50:42 tags: Docker categories: Docker copyright: true --- Docker是基于Go语言实现的开源容器项目,Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口,Docker诞生于2013年年初,最初发起者是dotCloud公司.

数据卷及容器连接

应用在容器中运行,总会用到或者产生一些数据,那么这些数据是如何保存的呢?外部又是如何使用这些数据的呢? 容器网络基础:容器通过对外暴露端口向外提供服务数据卷的概念和使用:通过数据卷来存储和共享数据容器连接:通过互联让一个容器安全的使用另一个容器已有的服务 当Docker启动后,会在宿主主机上创建一个名为docker0的虚拟网络接口:[[email protected] ~]# ip address show1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdis

Docker之七---Docker存储卷与容器卷详解

1.存储卷介绍 1.1 背景 (1)docker 的 AFUS 分层文件系统 docker镜像由多个只读层叠加而成,启动容器时,docker会加载只读镜像层并在镜像栈顶部加一个读写层: 如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件版本仍然存在,只是已经被读写层中该文件的副本所隐藏,此即“写时复制(COW)”机制. 描述:如果一个文件在最底层是可见的,如果在layer1上标记为删除,最高的层是用户看到的Layer2的层,在layer0上的文件

docker 12 docker容器数据卷

数据卷概念 ♣我们知道,当我们把一个运行中的容器关闭后,容器里的数据就没有了(如果你做了docker commit操作,数据会保留到新的镜像里面).所以我们就需要用容器数据卷把容器数据进行持久化储存. ♣还有一种情况,就是希望容器之间能共享数据,这时也需要容器数据卷. ♣一句话,数据卷就是用来解决数据持久化和数据共享的. ♣卷就是目录或者文件,存在一个或者多个容器中,由docker宿主机挂载到容器上,但是不属于联合文件系统,因此能绕过联合文件系统提供一些用于持久化存储或者共享数据的特性. ♣卷的

docker容器的数据卷以及使用方式

            Docker容器的数据卷 想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的.Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上(即镜像栈顶部)添加一个读写层.如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏.当删除Docker容器,并通过该镜像重新启动时,之前的更改

(九) Docker 容器数据卷(挂载)

一.容器数据卷 docker 容器数据卷是容器在运行过程中持久化数据的一种方式,卷是目录或文件,存在于一个或多个容器中,由docker 挂载到容器,但不属于联合文件系统,因此能够绕过Union File System  提供一些用于持续存储或共享数据的特性:卷的设计目的就是数据持久化,完全独立于容器的生命周期,因此docker不会在容器删除时,删除其挂载的数据卷. 特点: 数据卷可在容器之间共享或重用数据. 卷中的更改可以直接生效. 数据卷中的更改,不会包含在镜像中的更新. 数据卷的生命周期一直

docker数据卷之持久化操作

docker Docker三大核心组件:(运行起来的镜像就可以称作容器) Docker 镜像--Dcoker images:类比与类 Docker 仓库--Docker registeries: Docker 容器-- Dcoker conrainers:类比于实例化的对象 仓库(registry)--repo(Repository)-->镜像(按版本区分) 共有库 docker.io 私有库 yum库-->不同repo-->软件(按名字区分) docker底层原理 Docker是一个c

Docker系列-第五篇Docker容器数据卷

1.是什么 在生产环境中使用 Docker,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作 . 容器中的管理数据主要有两种方式 : 数据卷 ( Data Volumes ) : 容器内数据直接映射到本地主机环境: 数据卷容器( Data Volume Containers ) : 使用特定容器维护数据卷. 一句话:有点类似我们Redis里面的rdb和aof文件 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的

Docker 容器数据 持久化(系统学习Docker05)

写在前面 本来是可以将数据存储在 容器内部 的.但是存在容器内部,一旦容器被删除掉或者容器毁坏(我亲身经历的痛,当时我们的大数据平台就是运行在docker容器内,有次停电后,不管怎样容器都起不来.以前的同事也没有将数据映射到外面 .搞得最后我们重新导的数据,痛的领悟啊~~). 再就是如果不将数据映射出来 ,比如要想使用容器内部的web日志,也是比较难搞,反正不就是其它容器/服务不是很方便. 大体上来说,一般只要使用Docker都会将 重要的数据 进行持久化. 本文有任何问题,欢迎留言指正~ Do