当前位置:首页 » 存储配置 » docker共享存储

docker共享存储

发布时间: 2024-02-07 00:28:49

❶ 云计算核心技术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

d9af21273955: Pull complete

f5029279ec12: Pull complete

Digest: sha256:

Status: Downloaded newer image for ubuntu:18.04

这些层中的每一层都存储在Docker主机的本地存储区域内的自己的目录中。要检查文件系统上的各层,请列出的内容/var/lib/docker/。本示例使用overlay2 存储驱动程序:

$ ls /var/lib/docker/overlay2

l

目录名称与层ID不对应(自Docker 1.10开始就是如此)。

现在,假设您有两个不同的Dockerfile。您使用第一个创建名为的图像acme/my-base-image:1.0。

# syntax=docker/dockerfile:1

FROM ubuntu: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

第二个图像包含第一个图像的所有层,再加上带有CMD指令的新层,以及一个可读写容器层。Docker已经具有第一个映像中的所有层,因此不需要再次将其拉出。这两个图像共享它们共有的任何图层。

如果从两个Dockerfile构建映像,则可以使用docker image ls和 docker history命令来验证共享层的密码ID是否相同。

1.创建一个新目录cow-test/并更改到该目录中。

2.在中cow-test/,创建一个hello.sh具有以下内容的新文件:

#!/bin/sh

echo "Hello world"

保存文件,并使其可执行:

chmod +x hello.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-image:1.0 -f Dockerfile .

7.检查镜像的大小:

$docker image ls

8.检出构成每个镜像的图层:

$docker history bd09118bcef6

请注意,除了第二个图像的顶层以外,所有层都是相同的。所有其他层在两个图像之间共享,并且仅在中存储一次/var/lib/docker/。实际上,新层根本不占用任何空间,因为它不更改任何文件,而仅运行命令。

全国产经平台联系电话:010-65367702,邮箱:[email protected],地址:北京市朝阳区金台西路2号人民日报社

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:735
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1000
python中的init方法 发布:2025-10-20 08:17:33 浏览:706
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:869
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:767
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1108
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:340
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:216
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:904
python股票数据获取 发布:2025-10-20 07:39:44 浏览:863