为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'