云计算核心技术Docker教程:Docker存储写入时复制(CoW)策略
写时复制是一种共享和复制文件的策略,可最大程度地提高效率。如果文件或目录位于映像的较低层中,而另一层(包括可写层)需要对其进行读取访问,则它仅使用现有文件。另一层第一次需要修改文件时(在构建映像或运行容器时),将文件复制到该层并进行修改。这样可以将I / O和每个后云计续层的大小最小化。这些优点将在下面更深入地说明。
共享可以提升较小的图像
当您用于docker pull从存储库中下拉映像时,或者当您从本地尚不存在的映像中创建容器时,每个层都会被分别下拉,并存储在Docker的本地存储区域中,该区域通常/var/lib/docker/在L算核inux主机上。在此示例中,您可以看到这些层被拉出:
$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
f476d66f5408: Pull complete
8882c27f669e: Pull complete
d9af心技21273955: 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
ec1ec45792908e90484f7e629330666e7eee599f08729c93890a7205ar教6ba35f5
l
目录名称与层ID不对应(自Docker 1.10开始就是如此)。
现在,假设您有两个不同的Dockerfile。您使用第一个创建名为的图像acme/my-base-image:1.0。
# syntax=docker/dockerfile:1
FROM ubu程:ntu: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 historyck命令来验证共享层的密码ID是否相同。
1.创建一个新目录cow-test/并更改到该目录中。
2.在中cow-test/,创建一个hello.sh具有以下内容的新文件:
#!/bin/sh
echo "Hello world"
保存文件,并使其可执行:
chmod +x helloer.sh
3.将上面第一个Dockerfile的内容复制到一个名为的新文件中 Dockerfile.base。
4.将上面第二个Dockerfile的内容复制到一个名为的新文件中 Dockerfile。
5.在cow-test/目录中,构建第一个映像。不要忘记.在命令中包含存储final 。设置了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
请注意,除了第二个图像的顶层以外,所有层都是相同的。所有其他层在两个图像之间共享,并且仅在中存储一次/v时复ar/lib/docker/。实际上,新层根本不占用任何空间,因为它不更改任何文件,而仅运行命令。
-
云计算核心技术Docker教程:Java镜像使用标签Hadoop,大数据离不开它IBM收购云解决方案供应商Expertus 扩展混合云数字支付解决方案云安全日报201202:思科IOS XR网络互联操作系统发现执行未签名代码漏洞,需要尽快升级标签: 逐际动力 TRON 2 具身机器人 VLA独占授权终结!微软与 OpenAI 修订合作协议:不再支付营收分成标签: 甲骨文 OracleCloud AI数据库 Cerner标签: 星动纪元 具身智能 人形机器人 VLA标签: GoogleI/O2026 Gemini3.5Flash TPU8i Antigravity2.0苹果市值创新高 当前市值24112亿美元
- ·库克对话中国大学生:苹果与CDRF一道,促进贫困地区教育数字化
- ·标签: 苹果 iPhone 华为 海信空调
- ·700万参数微型模型 TRM,推理能力竟胜过 Gemini2.5Pro 和 Claude3.7
- ·标签: 网信中国 网络名人 负面清单 账号管理
- ·鑵捐�浜戦煶瑙嗛�瀹e竷鏀�寔H.266/VVC缂栬В鐮佹爣鍑�
- ·标签: 科大讯飞 人工智能 讯飞开放平台 大模型
- ·AI Factory如何快速安全地从概念进入产业化
- ·OpenAI 计划在印度建立大型数据中心,推动 AI 基础设施发展
- ·标签: 福特 小米SU7 吉姆·法利 电动汽车
- ·Canva免费放出Affinity专业设计套件,Adobe订阅制遭遇最强挑战
- ·Reddit将AI搜索功能扩展至5种新语言:覆盖巴西、法国等多个市场
- ·企业应用AI有了“导航仪”:首个企业应用AI成熟度模型发布
- ·加州大学华人博士团队训练AI模仿鸟儿唱歌 实时「意念-语音转换」
- ·第二季度PC市场增长17% 苹果继续保持第二位
- ·标签: 大麦娱乐 快达票 演出票务 港澳台市场
- ·标签: 罗永浩 真还传 科技春晚
- ·https://search.danawa.com/dsearch.php?query=谷歌霸屏业务【tg:seogoogle987】hHS
- ·https://www.lneg.pt/en/?s=谷歌霸屏业务【tg:seogoogle987】,erA
- ·https://www.shacknews.com/editorial-search?q=谷歌霸屏业务【tg:seogoogle987】,eNh
- ·https://www.lezhin.com/ko/tags/谷歌霸屏业务【tg:seogoogle987】,CdJ
- ·https://www.swecobelgium.be/?page=9&s=谷歌霸屏业务【tg:seogoogle987】,94e
- ·https://www.springfieldlibrary.org/?s=谷歌霸屏业务【tg:seogoogle987】,Wio
- ·https://www.impactpool.org/search/?type=79&q=谷歌霸屏业务【tg:seogoogle987】OyI
- ·https://www.yli.ro/catalogsearch/result/?q=谷歌霸屏业务【tg:seogoogle987】,IAy
- ·https://www.toy-people.com/?s=谷歌霸屏业务【tg:seogoogle987】,PAs
- ·https://www.mingwai.edu.hk/?langzh-hant&s=谷歌霸屏业务【tg:seogoogle987】,Tk7
- ·标签: 亿咖通 卓驭科技 天极计算平台 Flyme Auto
- ·标签: 奥克斯电气 华蒜 ShinFlow AUFIT
- ·外媒:英国、欧盟将就英伟达400亿美元收购ARM交易展开深入调查
- ·Meta 推出 Gaia2 评估平台:提升智能体在真实场景中的适应能力
- ·Sora2史诗更新!免费用户可生成15秒视频,Pro 用户升级至25秒
- ·云计算核心技术Docker教程:Docker Swarm 模式管理在将节点加入集群
- ·标签: DoNews 2026财年 财务预测 每股收益
- ·对冲基金敦促英特尔进行重大分拆:剥离芯片制造业务加强竞争力
- ·标签: 京东物流 智狼仓 Joybuy
- ·标签: 地平线 汽车芯片 NOA解决方案 智驾芯片
