当前位置: 首页 > 面试题库 >

为Docker映像构建上下文非常大

鲁烨熠
2023-03-14
问题内容

我尝试在主机上创建几个不同的目录,以尝试了解Docker,以使dockerfile井井有条。我刚运行的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客户端将整个“构建上下文”发送到Docker守护程序。该构建上下文(默认情况下)是其中的整个目录Dockerfile(因此是整个rpms树)。

您可以设置.dockerignore文件以使Docker忽略某些文件。您可能要尝试一下。

另外,您也可以将rpms文件夹移动到上一个目录级别Dockerfile,而仅将符号链接移动test.rpmDockerfile的目录中。

正如许多用户在评论中指出的那样,一个 文件夹 需要 添加.git.dockerignore其中,这是我的情况造成150MB->
5GB差异的原因。



 类似资料:
  • 目前,我发现谷歌云构建发生在构建docker图像的时候(不像我想象的那样,它会构建我的图像,然后执行我的图像来完成所有的构建)。那是在这篇文章里 谷歌云构建的快速启动 我有一个Dockerfile现在很简单 我有一个单一的下载和提取下载任何工件(zip文件)从最后的单构建运行构建(只有修改的服务器被构建或依赖于上一个CI构建的变化的服务器被构建,就像下游库可能被更改)。第一行只是列出了我需要在一个

  • 假设我在Fedora中以的身份登录,我将从Dockerfile构建Docker映像。该映像将包含一个LAMP环境。我有一个Apache虚拟主机(VH)默认文件,如下所示: 作为构建过程的一部分,该文件被复制到图像上的适当位置。 我可以从主机获取登录用户名并动态设置到此VH吗?最后,我希望得到以下结果: 我知道我可以从bash中使用获取当前用户的值,但我如何在Docker构建中将其插入/设置到VH文

  • 我试图从docker容器中安装curl,但由于以下错误而失败,我尝试设置代理-No go 尝试的步骤: > 使用Dockerfile构建docker 使用构建参数HTTP_PROXY构建 Docker 构建 docker登录到repo,然后尝试构建镜像-no go 使用 env 代理更新 config.json 文件 - 不行 使用不同的代理 试图刷新windows pc上的DNS docker构

  • 我试图遵循使用spring boot fat Jar使用Docker启动和运行的教程。我已经安装了一切,可以从Docker Hub运行Hello World示例。 我已经使用名为的Maven创建了fat jar,并使用以下内容作为我的dokerfile.docker: 如何从一个胖罐子构建docker映像?

  • 我正在运行一个Jenkinsdocker映像,我正在构建自己的映像,并希望添加对它的docker buildx支持,以便生成多平台映像,我不知道它应该如何工作。 当我检查受支持的平台时,我得到: 因为我在AMD64映像中。我读到我需要为此安装qemu,但我不知道Buildx如何识别它。 关于这一点,相关文档相对较少:https://docs.docker.com/buildx/working-wi