docker--数据卷

什么是Docker  Volume?

为了能够保存(持久化)数据以及共享容器间的数据,docker 提出了Volume的感念。简单来说,volume就是目录或者文件,他可以绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。类似于linux下对目录进行mount。

Docker Volume有什么优点呢?

优点: Volume 可以将容器以及容器产生的数据分离开来,这样,当你删除容器的时候,也不用担心会把容器里的数据删掉。

docker管理数据的方式有两种:数据卷   数据卷容器

数据卷是为了一个或者多个容器专门指定绕过联合文件系统的目录,为持续性或共享数据提供一些有用的功能;

   *数据卷可以在容器间共享和重用

   *数据卷数据改变是直接修改的

   *数据卷数据改变不会被包括在容器中

   *数据卷是持续性的,直到没有容器使用它

1、搭建docker环境且运行docker

[root@gy ~]# yum -y install docker

[root@gy ~]# systemctl start docker

[root@gy ~]# docker load < centos7.tar

[root@gy ~]# docker images 

2、使用dockerfile创建一个httpd的镜像

[root@gy ~]# mkdir /docker
[root@gy ~]# cd  /docker/
[root@gy docker]# vim  Dockerfile


[root@gy docker]# docker build -t="centos:httpd" .


3、在用 docker run命令的时候,可以使用-v来指定挂载一个本地主机的目录到容器中去。可用多次-v选项为一个docker容器运行挂载多个本地主机目录。

   *注意   如果主机上的路径不存在,目录将自动在给定的路径中指定。

例如:在宿主机上创建、www/wwwapp1目录,并创建一个index.html文件。

[root@gy ~]# mkdir -p /www/wwwapp1
[root@gy ~]# cd /www/wwwapp1/
[root@gy wwwapp1]# vim index.html

 

查看镜像


使用 centos:http创建容器

[root@gy ~]# docker run -dit -p 80:80 -v /www/wwwapp1/:/var/www/html/ centos:http


上面的命来加载主机的/www/wwwapp1目录到容器的/var/www/html 目录。这个功能在进行测试的时候十分方便。

挂载的目录可以通过docker inspect 容器ID 查看



现在可以在浏览器中输入宿主IP就可访问到测试页。


二、创建一个数据卷(Volume)

    创建的方法有两种:(这里使用第2种)

  (1)在Dockerfile中指定VOLUME  /目录

  (2)执行 docker run  -v  /目录 命令来指定

[root@gy ~]# docker run -dit -v /data centos:http

这里看到已经运行起来了,接下来查看目录挂载到哪里了

[root@gy ~]# docker inspect  815854ab0f49


进入这个目录,并创建a、b 、c文件,查看容器中是否有这三个文件。


[root@gy ~]# docker exec -it 815854ab0f49  /bin/bash


  *注   docker 挂载数据卷的默认权限是读写,用户也可以通过 :ro指定为只读。

例如:

把上面的/www/wwwapp1 下的测试页,挂载到/webapp1下,验证是否能改。


 从上图可以看到无法更改。

数据卷容器

    如果你有一些持久性的数据并且想在容器间共享,可以使用--volumes-from参数来执行,从此容器上挂载数据

    常见的使用场景是使用的纯数据容器来持久化数据库、配置文件或者数据文件等。

例如:创建一个命名的数据卷容器

[root@gy ~]# docker run -dit -v /test --name data centos:http

使用--volumes-from选项在另一个容器中挂载/test 卷

[root@gy ~]# docker run -dit --volumes-from data --name test1 centos:http /bin/bash

看运行容器

[root@gy docker]# docker ps

进入d2449ababe37这个容器,在test目录下创建a  b   c  三个文件,查看af84f5f0f5ef这个容器中是否也有a  b

c 三个文件

[root@gy ~]# docker exec -it d2449ababe37 /bin/bash


[root@gy ~]# docker exec -it  af84f5f0f5ef /bin/bash

[root@af84f5f0f5ef /]# ls test/


6、备份

    数据卷另外的一个功能是使用它们来做备份。恢复、移动数据。如果你在用数据容器,那么备份是相当容易。

使用 --volume标记来创建一个加载了卷的新容器,Volume 里的所有东西压缩为一个包



[root@gy ~]# docker run --rm --volumes-from data -v $(pwd):/backup centos:http tar cvf /backup/backup.tar /test


这里我们创建了一个容器,先从data容器来挂载数据卷。然后从本机挂载当前目录到容器的/backup目录。最后,使用tar命令来将data卷备份为backuo.tar。当命令执行完,容器停止后,我们就备份了data数据卷。

执行完成后删除容器 --rm ,此时备份就在当前目录下,名为backup.tar






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值