3

当我构建图像时docker build,输出包含上下文大小,例如:

Sending build context to Docker daemon  1.315GB
[...]
Successfully built a9ec4d33e12e

这个尺寸会影响生成的图像尺寸吗?我应该寻求减少吗?

4

3 回答 3

4

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

如果你这样做:

COPY . /app

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

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

您应该创建一个.dockerignore忽略您不关心的文件的文件。

于 2020-01-09T13:32:48.057 回答
3

这个尺寸会影响生成的图像尺寸吗?

我应该寻求减少吗?

是的。它节省了构建图像的时间。

资源:

https://medium.com/better-programming/docker-tips-about-the-build-context-dbc76505e178

于 2020-01-09T13:24:49.850 回答
3

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

有几种方法可以减少构建上下文的大小:

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

  • 编写一个.dockerignore文件,列出要从构建上下文中排除的文件。当您无法将文件移开时,这是下一个最好的事情。

这个尺寸会影响生成的图像尺寸吗?

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

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

我应该寻求减少吗?

是的。它将加快构建过程。

于 2020-01-09T13:43:57.457 回答