作者:三十
来源:恒生LIGHT云社区
Docker是如何组织存储的
dokcer在组织存储内容时很巧妙的应用了分层复用的思想。所以我们可以以此为案例学习一下该思想。
1.镜像分层
一个Docker镜像在构建的过程中分了很多层,每一层都是只读的。结合下面例子进行说明:
# syntax=docker/dockerfile:1
FROM ubuntu:18.04
LABEL org.opencontainers.image.authors="org@example.com"
COPY . /app
RUN make /app
RUN rm -r $HOME/.cache
CMD python /app/app.py
这个Dockerfile中会有4条指令改变了文件系统并创建了新层。
FROM指令从ubuntu:18.04的镜像中创建了基础层。LABEL指令仅仅修改了镜像的元数据,不会创建新层。COPY指令将执行本次构建的当前目录中的内容添加到镜像当中,会创建一个新层记录改变。- 第一个
RUN指令,构建了程序并将结果输出到镜像中,会创建一个新层记录改变。 - 第二个
RUN指令,删除了缓存目录,会创建一个新层记录改变。 CMD指令定义了容器中运行的指令,只是修改了镜像的元

本文详细介绍了Docker如何利用分层复用思想组织存储,包括镜像分层、容器分层、容器磁盘占用以及Copy-on-Write(CoW)策略。Docker通过只读层和可写层实现高效资源利用,CoW策略减少IO操作,提高容器启动速度。同时,文章提到多个镜像可以共享层,节省存储空间,而容器的改动存储在可写层,便于管理和回收。
最低0.47元/天 解锁文章
604

被折叠的 条评论
为什么被折叠?



