云计算核心技术Docker教程:Docker存储写入时复制(CoW)策略
写时复制是一种共享和复制文件的策略,可最大程度地提高效率。如果文件或目录位于映像的较低层中,而另一层(包括可写层)需要对其进行读取访问,则它仅使用现有文件。另一层第一次需要修改文件时(在构建映像或运行容器时),将文件复制到该层并进行修改。这样可以将I / O和每个后云计续层的大小最小化。这些优点将在下面更深入地说明。
共享可以提升较小的图像
当您用于docker pull从存储库中下拉映像时,或者当您从本地尚不存在的映像中创建容器时,每个层都会被分别下拉,并存储在Docker的本地存储区域中,该区域通常/var/lib/docker/在算核Linux主机上。在此示例中,您可以看到这些层被拉出:
$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
f476d66f5408: Pull complete
8882c27f669e: Pull complete
d心技9af21273955: Pull complete
f5029279ec12: Pull complete
Digest: sha256:ab6cb8de3ad7bb33e2534677f865008535427390b117d7939193f8d1a6613e34
Status:术D Downloaded newer image for ubuntu:18.04
这些层中的每一层都存储在Docker主机的本地存储区域内的自己的目录中。要检查文件系统上的各层,请列出的内容/var/lib/docker/。本示例使用overlay2 存储驱动程序:
$ ls /var/oclib/docker/overlay2
16802227a96c24dcbeab5b37821e2b67a9f921749cd9a2e386d5a6d5bc6fc6d3
377d73dbb466e0bc7c9ee23166771b35ebdbe02ef17753d79kefd3571d4ce659d7
3f02d96212b03e3383160d31d7c6aeca750d2d8a1879965b89fe8146594c453d
ec1ec45792908e90484f7e629330666e7eee599f08729c93890a7r教205a6ba35f5
l
目录名称与层ID不对应(自Docker 1.10开始就是如此)。
现在,假设您有两个不同的Dockerfile。您使用第一个创建名为的图像acme/my-base-image:1.0。
# syntax=docker/dockerfile:1
FROM u程:buntu:18.04
COPY . /app
第二acme/my-base-image:1.0层基于,但具有一些附加层:
# syntax=docker/dockerfile:1
FROM acme/my-base-image:1.0
CMD /app/hello.sh
第二个图像包含第一Do个图像的所有层,再加上带有CMD指令的新层,以及一个可读写容器层。Docker已经具有第一个映像中的所有层,因此不需要再次将其拉出。这两个图像共享它们共有的任何图层。
如果从两个Dockerfile构建映像,则可以使用docker image ls和 docker histockry命令来验证共享层的密码ID是否相同。
1.创建一个新目录cow-test/并更改到该目录中。
2.在中cow-test/,创建一个hello.sh具有以下内容的新文件:
#!/bin/sh
echo "Hello world"
保存文件,并使其可执行:
chmod +x hellero.sh
3.将上面第一个Dockerfile的内容复制到一个名为的新文件中 Dockerfile.base。
4.将上面第二个Dockerfile的内容复制到一个名为的新文件中 Dockerfile。
5.在cow-test/目录中,构建第一个映像。不要忘记.在命令中包含fi存储nal 。设置了PATH,它告诉Docker在哪里寻找需要添加到映像中的任何文件。
$docker build -t acme/my-base-image:1.0 -f Dockerfile.base .
6.建立第二张镜像。
$docker build -t acme/my-final-im写入age:1.0 -f Dockerfile .
7.检查镜像的大小:
$docker image ls
8.检出构成每个镜像的图层:
$docker history bd09118bcef6
请注意,除了第二个图像的顶层以外,所有层都是相同的。所有其他层在两个图像之间共享,并且仅在中存时复储一次/var/lib/docker/。实际上,新层根本不占用任何空间,因为它不更改任何文件,而仅运行命令。
(责任编辑:交易规则)
- Claude 与 Microsoft 365 深度整合,企业效率再提升!
- 一篇带给你Tekton系列之安装篇
- 硅谷大厂也看「名校学历」?Reddit小哥灵魂拷问引起热议
- 别再云里雾里,或许我们可以这样理解云原生
- 标签: 荣耀 关海涛 极氪 华为
- 人工智能的8种工业4.0指标
- 智元机器人推出D1系列,三款四足机器人发力文娱、教育与工业领域
- 标签: 科大讯飞 AstronClaw 讯飞AI眼镜 RobotClaw
- 标签: Cocos SUD 游戏引擎 AI Coding
- Meta 投资 15 亿美元在德州建设 AI 数据中心,水资源回收率将达 200%
- 标签: 美团App 问小团 AI搜索
- 零一万物辟谣,否认出售大模型预训练团队给阿里云
- 云计算核心技术Docker教程:Docker Swarm 模式管理集群列出节点
- 新加坡的全球新闻广播公司借助 AI 技术重塑新闻编辑室
- 标签: 三星电子 卢泰文 全永鉉 尹长贤
- 为规避欧盟隐私法规 Facebook将让英国用户接受美国用户协议
- 标签: 台积电 AI芯片 高性能计算 智能手机 HPC 魏哲家
- 杰夫·贝佐斯:人类有望在未来10至20年内在太空建造千兆瓦级数据中心
- 美股开盘新能源车板块普跌 苹果涨3.8%
- Twitter CEO参加国会听证会期间发推讽刺 引议员不满
- https://www.teamlab.art/ko/?submit=百度快排【tg:seogoogle987】,XLZ views+
- https://www.polar-tech.com/?action=QUERY&s=百度快排【tg:seogoogle987】,SvL views+
- https://www.searcychamber.com/list/search?AsfnA=DtkTQzs&q=百度快排【tg:seogoogle987】,nIq views+
- https://www.trockenmittel.ch/catalogsearch/result/?iC=ZM3&q=百度快排【tg:seogoogle987】,bKC views+
- https://www.umc.edu/search.aspx?ID=I4gnDKRS991MFcIDDzoYze4aWSAszAm7&q=百度快排【tg:seogoogle987】,OFD views+
- https://www.teamlab.art/pt/?submit=百度快排【tg:seogoogle987】,Ezu views+
- https://www.tullygroup.us/?ID=hbkq8jFjrQlVRrwzEmvoUJJAY4e1Lfo5&s=百度快排【tg:seogoogle987】,EtI views+
- https://www.teacherspayteachers.com/Browse/Search:百度快排【tg:seogoogle987】,VHO views+
- https://nicolazzi.it/en/?s=百度快排【tg:seogoogle987】,U8w views+
- https://www.luxurysociety.com/en/search?q=百度快排【tg:seogoogle987】,4JV views+
