docker volume

1.docker volume原理

docker镜像是由多个文件系统(只读层)叠加而成的。启动一个容器时,会加载只读层并在其上创建一个可读写层。所以,容器中更改据都存放在这个可读写层中,当删除docker容器,并通过该镜像重新启动,之前的更改将会丢失。

volume可以将容器以及容器产生的数据分离开来,这样,但是用docker rm container删除容器时,不会影响相关的数据。

2.docker volume的管理方式

(1)数据卷

据卷是一个或多个容器专门指定绕过Union File System的目录,为持续性或共享数据提供一些有用的功能:

(1)数据卷可以在容器间共享和重用

(2)数据卷数据改变是直接修改的

(3)数据卷是持续性的

在创建容器可以结合"-v"选项来指定容器挂载宿主机的文件夹。

例:

在宿主机创建将要挂载到容器的文件夹,并在文件夹中创建测试文件。

(这里使用的镜像创建的容器拥有httpd、sshd服务)

创建容器web1,将宿主机的/web/webapp1目录挂载到容器的/var/www/html目录

这里,设置了端口映射,方便之后测试。

注意:挂载和被挂载的目录不存在时,系统会自动创建。

创建完成后,可以查看容器的挂载信息。

测试

访问宿主机的IP地址,便可以打开测试页面。

远程登录到容器,也可以看到/var/www/html目录下拥有这些测试文件。

注意:默认容器对挂载的文件夹具有读写的权限,可以在创建容器时结合"ro"选项将权限设置为只读。

2.数据卷容器

结合"--volumes-from"选项,可以授权一个容器访问另一个容器的volume。这样,可以创建一个数据卷容器,然后从次容器上挂载数据。

例:

创建数据卷容器data

注意:数据卷容器的状态没有要求,可以是运行状态,也可以是关闭状态。

将data挂载到新的容器test上

这里看到,test中的/test目录也挂载了系统的/web/webapp1目录

附:

docker rm -f -v container删除容器,同时可以删除被挂载的目录。要求:数据卷容器在创建时,使用的挂载的目录是系统指定的默认目录。例如:

创建数据卷容器,这里"-v"后面只有一个"/test1",该目录是容器中的目录。

可以看到宿主机被挂载的目录

删除数据卷容器

发现宿主机中用来挂载的目录也被删除了

3.利用容器创建数据备份及还原

创建一个一次性的容器,利用该容器,将宿主机挂载目录下的内容备份到当前目录下。

删除/web/webapp1下的内容后,进行还原:

时间: 2024-08-01 06:28:17

docker volume的相关文章

docker volume具体实现

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

(转)Docker volume plugin - enabled create local volume on docker host

原文地址:https://hub.docker.com/r/cwspear/docker-local-persist-volume-plugin/ Short Description Create named local volumes that persist in the location(s) you want. Full Description Local Persist Volume Plugin for Docker   Create named local volumes that

[转载] 深入理解docker volume

原文: http://dockerone.com/article/128 相对于程序包而言, 大量的数据文件的部署和管理(比如mysql数据库文件)是云平台领域不太容易解决的问题, 需要考虑非常多的因素, 比如网络带宽, 比如磁盘IO限速, 比如跨机房带宽控制等等. docker的volume概念, 把程序和数据进行了分离, 从而达到按需管理的目的. 本文讲解了docker volume的用法和使用场景. 深入理解Docker Volume(一) [编者的话]本文主要介绍了Docker Volu

docker volume 创建、使用、备份、使用nfs存储

docker存储volume #环境 centos7.4 , Docker version 17.12.0-ce docker volume创建.使用.备份.使用nfs存储 #docker volume 数据存容器内,删容器即销毁全部数据 要保留的数据(数据持久化),需存储在容器外 docker volume是文件或目录,mount到docker容器中使用 docker volume bind muount #挂载任意目录或文件 Volumes #固定路径的目录,docker管理 tmpfs m

用一个实际例子理解Docker volume工作原理

要了解Docker Volume,首先我们需要理解Docker文件系统的工作原理.Docker镜像是由多个文件系统的只读层叠加而成.当一个容器通过命令docker run启动时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层.如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,但是该文件的只读版本依然存在,只不过已经被读写层中该文件的副本所隐藏. 当删除Docker容器,并通过该镜像重新启动时,之前在读写层的更改将会丢失.在Docker中,只读

利用Docker volume修改Nginx Docker镜像里index.html

通过这个小例子我们可以进一步加深对Docker volume概念的理解和使用方法. 我们都知道运行基于Docker的Nginx镜像后,访问localhost能看到Nginx默认的首页,这个首页的位置是Nginx镜像内的/usr/share/nginx/html目录下面. 假设我们有个需求,修改Nginx默认的首页成下面的内容: <html> <head> <title>Custom Website from my container</title> <

Linux下部署docker记录(1)-Volume使用

之前部署了Linux下部署docker记录(0)-基础环境安装,接下来看看Docker Volume的使用. Docker volume使用1)一个数据卷是一个特别指定的目录,该目录利用容器的UFS文件系统可以为容器提供一些稳定的特性或者数据共享.数据卷可以在多个容器之间共享.2)创建数据卷,只要在docker run命令后面跟上-v参数即可创建一个数据卷,当然你也可以跟多个-v参数来创建多个数据卷,当创建好带有数据卷的容器后,你就可以在其他容器中通过--volumes-froms参数来挂载该数

【VMCloud云平台】拥抱Docker(五)Volume(1)

在上一篇中,我们讲到了如何配置多个容器并且定制属于自己的镜像,但是容器的数据性能以及持久如何保证的?本篇将通过介绍Docker Volume来说明这个问题,涉及到的架构如下图所示: 1. 说到Volume实际上有多种方式可以实现,第一种方式为采用Dockerfile,但这种方式要找到对应的volume存放在主机哪里比较麻烦.首先我们查找我们存在哪些images: 2. 然后我们写一个dockerfile,并在其中指定Volume: 3. 接着我们使用docker file构建镜像(关于Docke

docker managed volume - 每天5分钟玩转 Docker 容器技术(40)

docker managed volume 与 bind mount 在使用上的最大区别是不需要指定 mount 源,指明 mount point 就行了.还是以 httpd 容器为例: 我们通过 -v 告诉 docker 需要一个 data volume,并将其 mount 到 /usr/local/apache2/htdocs.那么这个 data volume 具体在哪儿呢? 这个答案可以在容器的配置信息中找到,执行 docker inspect 命令: docker inspect 21a