Docker中的Storage driver

要了解storage driver的概念,我们得明白docker的一些工作原理

layer stack

通过dockerfile,可以基于旧的image文件,创建新的image文件

比如以下dockerfile:

FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py

基于ubuntu:18.04 image, 创建了新的image

image创建是采用layer stack的模式。

即首先引用已有的image,在 此基础上每一条执行命令,都意味着对旧的image改动,因此对应每条执行命令,就会创建一个新image layer, 叠加在旧的image之上,比如以上命令:

  • FROM引用已有的ubuntun 18.04image
  • COPY基于FROM创建layer
  • RUN基于COPY创建layer

每个layer中,都仅包含本指令改动的内容。这样一层层的堆积后的整体效果,就是最终的image

一个完整的image就由旧有的image,以及之上的一层层layer stack构成。

从image创建container的过程,也是基于这个原理,由image创建container的时候,上面再构建一个container layer。其中container layer是运行时可读写的,而之下的image layer是只读的,如图:

同一个image可以创建多个container,即创建多个container layer。container内的数据读写,就发生在container layer中,如图:

显然,这样做的好处,大大的节省了存储空间,提高了资源的重用

copy on write(cow)

整个image layer采用copy on write的工作方式,即上层并不完全拷贝下层数据,上层仅仅保存本层修改了的数据。

仅有当上层layer需要对下层layer中的数据修改时,才把需要修改的内容拷贝到上层,修改后结果保存在上层,这样上层修改后的数据会隐藏掉下层的数据,达到修改目的。

需要注意的是,下层的数据依然还在,仅仅是被上层的数据隐藏了

storage driver

整个image layer stack以及cow模式,是一种设计思路。而具体的实现,叫做storage driver,storage driver也叫graphdriver

docker通过统一的接口,使用插件的方式,可选择不同的storage driver。

启动docker daemon的时候,可通过–storage-driver参数指定具体的storage driver,指定后,所有的image都采用该storage driver。

大部分情况下 ,我们都不需要自定义storage driver,只有在一些特定的操作系统,或者业务环境中,可通过选择合理的storage driver,实现效率最大化

container内数据保存

container内数据修改,就保存在container layer中。container尽可能少的进行数据读写,减少cow的代价,以及container的大小。

当有数据需要频繁读写时,该数据建议保存到volume中

相关命令

#查看storage driver
docker info

#指定storage dirver
dockerd --storage-driver=devicemapper


#查看image layer
docker history [image id]

# 查看container占用的存储大小
ls /var/lib/docker/containers

或者
docker ps -s
//其中显示的size是container数据在磁盘的大小。virtual size是size加下层image数据总共的大小。
//注意的是下层image数据是多个container共享的,仅占一份空间

Ref



《 “Docker中的Storage driver” 》 有 5 条评论

  1. F Kaplan Meier estimator of time to recurrence RFS, months of tumors derived from patients with ER positive disease, stratified on the basis of LYPD3 protein expression 0 no staining, 1 positive staining how to buy generic cytotec no prescription Can Low Iron Lower Your Blood Pressure

  2. how can i buy priligy in usa 52 imiquimode bula pdf Kerry will leave Washington on Monday night to fly to Amman to see officials from Jordan and the Arab League, which put forward a peace proposal in 2002 that offered full Arab recognition of Israel if it gave up land seized in a 1967 war and accepted a just solution for Palestinian refugees

  3. Cytokine Secretions in Partial Breast Tumor Microenvironment With and Without Sulforaphane priligy 30mg price Zobeiri M, Parvizi F, Shahpiri Z, et al

回复 cytotec misoprostol buy online 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About Me

一位程序员,会弹吉他,喜欢读诗。
有一颗感恩的心,一位美丽的妻子,两个可爱的女儿
mail: geraldlee0825@gmail.com
github: https://github.com/lisuxiaoqi
medium: https://medium.com/@geraldlee0825