首页 > 解决方案 > Mac 上 Docker 中的各种缓存是否损坏?

问题描述

我正在尝试对我在网上找到的 Dockerfile 进行故障排除。由于它以一种奇怪的方式失败,我想知道失败的 docker build 或 docker run 从该文件的各个子集或我一直在试验的其他文件是否可能会破坏 Docker 自身状态的某些部分。

换句话说,是否可能有助于重新启动 Docker 本身、重新启动计算机或执行一些其他 Docker 命令来消除这种可能性?

标签: docker

解决方案


有时只是重新启动会有所帮助,尝试重新启动 Docker for Mac 或完全重新启动并没有错,但我想不出它会修复什么特定症状,而且这不是我需要经常做的事情。

我只遇到了两类听起来像你描述的问题。

如果您的 Dockerfile 步骤始终成功,但产生不一致的结果:

RUN curl http://may.not.exist.example.com/ || true

您可能会遇到底层命令失败或产生错误输出但整个RUN步骤成功的情况。 docker build --no-cache将忽略这一点重新运行构建,并且非常激进的docker rmi序列(删除有问题的图像的每个构建,当前和过去)也将清理它。

我遇到的另一类问题涉及/var/lib/docker. 这通常具有非常明显的症状,通常涉及您知道有效的设置上的“找不到文件”或“安装目录失败”类型错误。我在本机 Linux 上遇到的比 Docker for Mac 更多,可能是因为 DfM Linux 安装对 Docker 更加可控和优化(它绝对没有运行带有任意供应商补丁的 3 年前内核)。在 Linux 上,您可以通过停止 Docker、删除 中的所有内容/var/lib/docker并重新启动 Docker 来解决此问题;在 Docker for Mac 的首选项窗口中,有一个“重置”页面,其中包含各种破坏性清理选项和“重置为出厂默认设置”


推荐阅读