我在我的主机上创建了几个不同的目录,因为我试图了解 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 映像时,还有什么我不知道的吗?当我在主机上的其他目录中构建更多图像时,我的内存是否在积累?
sudo docker build -t="crystal/test" .
Docker 客户端将整个“构建上下文”发送到 Docker 守护进程。该构建上下文(默认情况下)是它所在的整个目录Dockerfile(因此,整个rpms树)。
Dockerfile
rpms
你可以设置一个.dockerignore文件让 Docker 忽略一些文件。您可能想尝试一下。
.dockerignore
或者,您可以将您的rpms文件夹移动到您的上一级目录Dockerfile,并且仅将符号链接test.rpm到Dockerfile‘s 目录。
test.rpm
您通常希望 将.git文件夹添加到.dockerignore此处的评论中,这对于某些用户来说是 150MB -> 5GB 差异的原因。
.git