docker系列—聊一聊存储驱动VFS

VFS

vfs是接口的“原生”的实现,完全没有使用联合文件系统或者写时复制技术

对于vfs要创建新层,需要对上一层进行“深度复制”。与其他存储驱动程序相比,这会导致性能降低和磁盘上更多的空间使用。但是,它是健壮,稳定的,并且可以在每种环境中使用。

但并不建议在实际或者生产环境使用,但是对于需要进行简单验证的场景,或者需要测试Docker引擎的其他部件的场景,是很有价值的。对于在Docker中运行Docker的场景也很有用,要知道graphdriver嵌套起来,可能会让你丈二和尚摸不着头脑。

顺便一提:Docker引擎开发者用来构建Docker自己所使用的Dockerfile,也是采用vfs来作为里边Docker的graphdriver。

使用vfs存储驱动程序配置Docker

  1. 停止Docker

    systemctl stop docker
    
  2. 编辑/etc/docker/daemon.json。如果尚不存在,请创建它。假设文件为空,请添加以下内容。

    {
      "storage-driver": "vfs"
    }
    

    如果要设置控制VFS存储驱动程序可以使用的最大大小size,请在storage-opts密钥上设置选项。仅在Docker 17.12及更高版本中支持配额。

    {
      "storage-driver": "vfs",
      "storage-opts": ["size=256M"]
    }
    

    如果daemon.json文件包含格式错误的JSON,则Docker无法启动。

  3. 启动Docker。

    systemctl start docker
    
  4. 验证守护程序正在使用vfs存储驱动程序。使用docker info命令并查找,注意修改存储方式后,之前的image将不可用。
    在这里插入图片描述
    Docker现在正在使用vfs存储驱动程序。Docker自动创建了/var/lib/docker/vfs/目录,其中包含运行容器所使用的所有层。

vfs存储驱动程序如何工作

VFS不是一个联合文件系统。相反,每个镜像层和可写容器层在Docker主机上表示为/var/lib/docker/中的子目录。union mount提供所有层的统一视图。目录名并不直接对应于层本身的id。

VFS不支持写时复制(COW),因此每次创建新层时,它都是其父层的深层副本。这些层都位于下 /var/lib/docker/vfs/dir/。

镜像和容器在磁盘上的构造

下面是pull了一个omcat镜像
在这里插入图片描述
在这里插入图片描述
du -sh 查看占用磁盘的大小,这也是使用vfs存储驱动程序的缺点之一 。下图是overlay2存储驱动下的tomcat,对比结果可想而知
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值