我在我的主机上创建了几个不同的目录,因为我试图学习Docker,只是为了让我的dockerfile有条理。我刚刚运行的Dockerfile是这样的:

FROM crystal/centos
MAINTAINER crystal

ADD ./rpms/test.rpm ./rpms/ 
RUN yum -y --nogpgcheck localinstall /rpms/test.rpm 

我的实际转速只有1gb。但是当我尝试执行sudo docker build -t="crystal/test" .时,我得到将构建上下文发送到docker守护进程3.5 GB。在您继续构建Docker映像的过程中,还有什么我不知道的吗?当我在主机上的其他目录中构建更多映像时,内存是否在不断积累?


当前回答

如果你想完全控制你的构建上下文,你也可以在没有任何上下文的情况下完全构建容器,然后将相关数据复制到容器中。

docker build - < Dockerfile

这种方法的一个缺点是,您只能在dockerfile中添加引用远程URL的内容,而不能添加来自本地主机的文件。

看到https://docs.docker.com/engine/reference/commandline/build/建立与—

其他回答

如果你在创造图像和获取信息 将构建上下文发送到docker守护进程,该守护进程需要日志时间来复制,

然后添加.dockerignore文件。它应该包括文件或目录 不需要复制。

解决由不充分的.dockerignore排除引起的大型上下文问题的一个选项是使用以下命令:

Rg -uuu——ignore-file .dockerignore——files——排序路径。

哪个使用这个工具:https://github.com/BurntSushi/ripgrep

它工作得很好。

检查构建的docker映像的最佳工具是dive https://github.com/wagoodman/dive

以下是官方说明书中的说明:

要分析Docker映像,只需运行带有image标签/id/digest的dive:

dive <your-image-tag>

或者如果你想建立你的图像,那么直接开始分析它:

dive build -t <some-tag> .

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

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

从docker-dir建立以下是很好的

docker build -t br_base:0.1 . 

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

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

docker build -t br_base:0.1 ./base

这里的Context是由'./base'给出的

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

docker build——no-cache -t nginx5 -f /home/DF/ dockerfile /home/DF/ - right

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