我在我的主机上创建了几个不同的目录,因为我试图了解 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 映像时,还有什么我不知道的吗?当我在主机上的其他目录中构建更多图像时,我的内存是否在积累?
原文由 Crystal 发布,翻译遵循 CC BY-SA 4.0 许可协议
Docker 客户端将整个“构建上下文”发送到 Docker 守护程序。该构建上下文(默认情况下)是
Dockerfile
所在的整个目录(因此,整个rpms
树)。你可以设置一个
.dockerignore
文件来让 Docker 忽略一些文件。您可能想尝试一下。Alternatively, you can move your
rpms
folder one directory level above yourDockerfile
, and only symlinktest.rpm
into theDockerfile
’s directory.您通常希望 将
.git
文件夹添加到.dockerignore
中,这是此处评论中某些用户存在 150MB -> 5GB 差异的原因。