Docker 构建上下文大小是否影响图像大小?

Docker 构建上下文大小是否影响图像大小?,docker,docker-build,docker-daemon,Docker,Docker Build,Docker Daemon,当我使用docker build生成图像时,输出包含上下文大小,例如: Sending build context to Docker daemon 1.315GB [...] Successfully built a9ec4d33e12e 此大小是否影响生成的图像大小?我应该设法减少吗 此大小是否影响生成的图像大小 没有 我应该设法减少吗 对。这样可以节省构建图像的时间 资料来源: 构建上下文在某些情况下会影响图像的大小,是的 如果您这样做: COPY . /app 然后,上下文中的所有

当我使用
docker build
生成图像时,输出包含上下文大小,例如:

Sending build context to Docker daemon  1.315GB
[...]
Successfully built a9ec4d33e12e
此大小是否影响生成的图像大小?我应该设法减少吗

此大小是否影响生成的图像大小

没有

我应该设法减少吗

对。这样可以节省构建图像的时间

资料来源:


构建上下文在某些情况下会影响图像的大小,是的

如果您这样做:

COPY . /app
然后,上下文中的所有内容都将复制到图像中的
/app

如果只复制上下文的显式子集,例如
COPY mydir/app/
,则上下文大小不会影响图像大小,只有
mydir
的内容会影响图像大小


您应该创建一个
.dockergnore
,它会忽略您不关心的文件。

当您运行
docker build
时,它会将
Dockerfile
目录中的所有文件和所有子目录发送到docker守护程序。它是在假设您的
Dockerfile
可能会引用所有这些文件的情况下执行此操作的,但请注意,它不会检查您的
Dockerfile
以确定要发送哪些文件。它只是发送所有信息

有几种方法可以减小生成上下文大小:

  • 将您的
    Dockerfile
    放在它自己的目录中,只包含它需要的文件。例如,不要在项目的顶层有一个
    Dockerfile
    ,而是将它放在它自己的子目录中

  • 编写一个
    .dockrignore
    文件,列出要从生成上下文中排除的文件。当您无法移动文件时,这是下一个最好的选择

此大小是否影响生成的图像大小

是和否。过大的构建上下文不会增加图像大小。生成上下文中没有被
Dockerfile
使用的额外文件将被简单地丢弃

但是,如果使用
.dockergnore
忽略
Dockerfile
确实使用的文件,则可能会减小图像大小(并可能破坏图像)。忽略文件将导致
复制/例如,使用app
复制更少的文件

我应该设法减少吗

对。这将加快构建过程