一尘不染

为Docker映像构建上下文非常大

docker

我尝试在主机上创建几个不同的目录,以尝试了解Docker,以使dockerfile井井有条。我刚运行的Dockerfile如下所示:

FROM crystal/centos
MAINTAINER crystal

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

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


阅读 258

收藏
2020-06-17

共1个答案

一尘不染

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

您可以设置.dockerignore文件以使Docker忽略某些文件。您可能要尝试一下。

另外,您也可以将rpms文件夹移动到上一个目录级别Dockerfile,而仅将符号链接移动test.rpmDockerfile的目录中。


正如许多用户在评论中指出的那样,一个 文件夹 需要 添加.git.dockerignore其中,这是我的情况造成150MB->
5GB差异的原因。

2020-06-17