03.Docker存储详解

Docker 为容器提供了两种存放数据的资源:由 storage driver 管理镜像层和容器层,为无状态容器提供数据存储;由 Data volume管理应用数据,为有状态容器提供数据存储。
无状态容器:指容器在运行过程中不需要保存数据(数据非持久化保存),每次访问的结果不依赖上一次访问,如提供静态页面的web服务器;
有状态容器:指容器需要保存数据(数据持久化保存),而且数据会发生变化,访问的结果依赖之前请求的处理结果,最典型的就是数据库服务器。

1. storage driver

storage driver 实现了镜像的多层数据的堆叠(镜像的分层结构)并为用户提供一个单一的合并之后的统一视图。
Docker 安装时会根据当前系统的配置选择默认的 driver ,默认driver是overlay2,底层文件系统是xfs(docker-ce版本:20.10.5)

2. Data volume

Data Volume 本质上是 Docker Host 上文件系统中的目录或文件(而不是没有格式化的磁盘),是docker host文件系统的一部分(容量取决于挂载的目录或者文件),能够直接被 mount 到容器的文件系统中,容器可以直接读写 volume 中的数据,并且数据也可以被永久地保存,即使使用它的容器已经销毁。
docker 提供了两种类型的 volume : bind mount、docker managed volume。

  • bind mount

bind mount 是将 host 上已存在的、指定的目录或文件 mount 到容器的目录或文件上,所以原目录或文件内容会被覆盖,由host上的目录或文件取代;bind mount 需要指定 host文件系统的特定路径,这就限制了容器的可移植性;docker 不会销毁 bind mount,删除数据的工作只能由 host 负责。
bind mount 时还可以指定数据的读写权限,默认是可读可写,可指定为只读(此时只有host才有权限修改)来提高数据安全性;可以将共享数据放在 bind mount 中,然后将其 mount 到多个容器来实现容器之间数据共享。
指定 -v <MOUNT_POINT>: :ro 参数表示以只读的方式将容器中的路径挂载到host上。

#将本地的~/htdocs目录挂载到apache首页目录下

[root@node1 ~]# docker run -d -P --name web1 \

-v ~/htdocs:/usr/local/apache2/htdocs httpd:2.4

[root@node1 ~]# docker run -d -P --name web2 \

-v ~/htdocs:/usr/local/apache2/htdocs httpd:2.4

[root@node1 ~]# docker run -d -P --name web3 \

-v ~/htdocs:/usr/local/apache2/htdocs httpd:2.4

#修改本地~/htdocs/index.html文件以验证应用首页内容也随之修改,且web集群共享该首页

[root@node1 ~]# echo "This is a new index for web cluster" > htdocs/index.html

[root@node1 ~]# curl 192.168.154.11:49153

This is a new index for web cluster

[
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KnockCloud

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值