为Docker镜像构build上下文非常大

我在主机上创build了几个不同的目录,因为我试图了解Docker,只是为了让我的dockerfiles保持组织。 我刚刚运行的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" . ,我得到构build上下文到Docker守护进程3.5 GB。 当您继续构buildDocker镜像时,是否还有其他事情我不知道? 当我在主机上的其他目录中build立更多图像时,我的内存是否积累?

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

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

或者,您可以将您的rpms文件夹移动到Dockerfile上方的一个目录级别,并且只将test.rpm链接到Dockerfile的目录中。

我通过将我的Dockerfile和docker-compose.yml移动到一个子文件夹中来解决这个问题。 Docker显然将当前文件夹发送到守护进程,我的文件夹是9演出。

在我的情况下,当我执行错误-f参数 – 没有path到位于Dockerfile的目录

docker build --no-cache -t nginx5 -f /home/DF/Dockerfile /home/DF/ – right

docker build --no-cache -t nginx5 -f /home/DF/Dockerfile – 错误

我有和FreeStyler一样的问题。 然而,我从一个目录中build立一个从我的上下文。 所以-f参数是正确的上下文是不正确的。

 project | -------docker-dir 

从dockerbuild设,以下是好的

 docker build -t br_base:0.1 . 

从dock-dir构build构build上下文已更改。 所以我需要改变命令的上下文。 上下文由'。'给出。 在上面的命令中。

项目目录中的新命令应该是

 docker build -t br_base:0.1 ./base 

这里的上下文是由'./base'