小编典典

为非常大的 docker 图像构建上下文

all

我在我的主机上创建了几个不同的目录,因为我试图了解 Docker 只是为了让我的 dockerfiles 井井有条。我刚刚运行的 Dockerfile
如下所示:

FROM crystal/centos
MAINTAINER crystal

ADD ./rpms/test.rpm ./rpms/ 
RUN yum -y --nogpgcheck localinstall /rpms/test.rpm

我的实际 rpm 只有 1 GB。但是当我尝试这样做时sudo docker build -t="crystal/test" .,我将构建上下文发送到
3.5 GB 的 Docker 守护进程。当您继续构建 Docker
映像时,还有什么我不知道的吗?当我在主机上的其他目录中构建更多图像时,我的内存是否在积累?


阅读 154

收藏
2022-05-20

共1个答案

小编典典

Docker 客户端将整个“构建上下文”发送到 Docker
守护进程。该构建上下文(默认情况下)是它所在的整个目录Dockerfile(因此,整个rpms树)。

你可以设置一个.dockerignore文件让 Docker 忽略一些文件。您可能想尝试一下。

或者,您可以将您的rpms文件夹移动到您的上一级目录Dockerfile,并且仅将符号链接test.rpmDockerfile‘s 目录。


您通常希望 .git文件夹添加到.dockerignore此处的评论中,这对于某些用户来说是 150MB -> 5GB 差异的原因。

2022-05-20