如何删除发送到Docker守护程序构建上下文的文件

时间:2017-07-15 12:32:12

标签: docker dockerfile

我在我的主目录中运行了这个命令:

res.sendFile('public/index.html')

并且在我知道发生了什么之前它向Docker守护程序发送了20 GB文件。我的笔记本电脑上没有空间了。如何删除已复制的文件?我无法找到它们。

3 个答案:

答案 0 :(得分:4)

运行docker build .命令时会发生什么:

  1. Docker客户端在运行命令的同一目录中查找名为Dockerfile的文件。如果该文件不存在,则抛出错误。
  2. Docker客户端查找名为.dockerignore的文件。如果该文件存在,Docker客户端将在下一步中使用它。如果不存在则没有任何反应。
  3. Docker客户端生成一个名为tar的{​​{1}}包。默认情况下,它包含与build context在同一目录中的所有内容。如果Dockerfile文件中有一些ignore规则,则Docker客户端会排除.dockerignore规则中指定的那些文件。
  4. Docker客户端将ignore发送到名为build contextDocker daemon的Docker引擎。
  5. Docker引擎动态获取Docker server并开始构建图像,逐步在build context中定义。
  6. 完成图像构建后,Dockerfile将被释放。
  7. 因此,如果只需要所有构建上下文,那么构建上下文不会复制到您刚创建的映像中的任何位置。您可以运行以下方法检查图像大小:build context。如果您看到一些未使用或不必要的图像,请使用docker images

    如果您的图片不需要构建环境中的所有内容,建议您使用docker rmi unusedImageName规则来减少.dockerignore大小。排除图像不需要的所有内容。这样,构建过程会更短,您将看到build context中是否存在任何配置错误的COPYADD步骤。

    例如,我使用这样的东西:

    Dockerfile

答案 1 :(得分:1)

结果图像可能正在使用空间。找到并删除它:

docker images

size列搜索。

然后将其删除:

docker rmi <image-id>

您还可以删除所有与docker相关的内容:

docker system prune -a

答案 2 :(得分:1)

如果出于某种原因停止构建上下文,您可以使用 root access 转到/ var / lib / docker / tmp /,然后删除docker builder的tmp文件。在这种情况下,构建上下文不能正确构建,因此它构建的部分保存在 / var / lib / docker / tmp /

中的tmp文件中