为docker图像构建上下文非常大

问题描述 投票:82回答:6

我在我的主机上创建了几个不同的目录,因为我试图了解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" .时,我会将构建上下文发送到Docker守护进程3.5 GB。当你继续构建Docker镜像时,还有其他我不知道的东西吗?当我在主机上的其他目录中构建更多图像时,我的内存是否在累积?

docker
6个回答
14
投票

我通过将我的Dockerfile和docker-compose.yml移动到子文件夹来修复它,它运行得很好。显然,docker将当前文件夹发送到守护进程,我的文件夹是9演出。


3
投票

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

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

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


3
投票

如果你有一个.dockerignore文件并且构建上下文仍然很大,你可以使用The Silver Searcher检查发送到docker构建上下文的内容:

ag --path-to-ignore .dockerignore --files-with-matches

请注意,某些**模式可能无法正常工作。

有关其他评论,请参阅此Github问题:https://github.com/moby/moby/issues/16056


0
投票

我和FreeStyler有同样的问题。但是我是从我的上下文中的目录构建的。所以-f参数是正确的,上下文是不正确的。

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

从docker-dir建造以下是好的

docker build -t br_base:0.1 . 

从dock建立 - 为构建上下文改变了。因此我需要更改命令中的上下文。上下文由'。'给出。在上面的命令中。

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

docker build -t br_base:0.1 ./base

这里的上下文由'./base'给出

© www.soinside.com 2019 - 2024. All rights reserved.