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
复制更少的文件
我应该设法减少吗
对。这将加快构建过程