Mac上的Docker中的各种缓存是否损坏了?

时间:2019-01-27 12:57:50

标签: docker

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

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

2 个答案:

答案 0 :(得分:2)

有时候只是重新启动东西会有所帮助,尝试重新启动Mac的Docker或进行完全重新启动并没有错,但是我想不到它可以解决的特定症状,这不是我日常要做的事情。

我真的只遇到过两类问题,听起来像您在描述什么。

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

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

您可能会遇到以下情况:基础命令失败或产生了错误的输出,但整个RUN步骤成功了。 docker build --no-cache会忽略此内容重新运行构建,并且极其激进的docker rmi序列(删除所讨论图像的每个构建,包括当前和过去的构建)也将对其进行清理。

我遇到的另一类问题涉及/var/lib/docker中的某种程度的损坏。这通常具有非常明显的症状,通常涉及在您否则知道起作用的设置上出现“找不到文件”或“安装目录失败”类型的错误。我在本机Linux上比在Mac上使用Docker遇到的更多,这可能是因为DfM Linux安装对Docker的控制和优化程度更高(它肯定没有运行具有3年历史的带有任何厂商补丁程序的内核)。在Linux上,您可以通过以下方法来解决此问题:停止Docker,删除/var/lib/docker中的所有内容,然后再次启动Docker。在Docker for Mac的“首选项”窗口中,有一个“重置”页面,其中包含各种破坏性清除选项,而“重置为出厂默认值”最接近此页面。

答案 1 :(得分:1)

我将首先尝试使用Docker的“诊断和反馈”选项。通常,这会针对Docker和Docker引擎的运行状况运行测试。

Docker桌面在“首选项”>“重置”(如果您使用的是Docker桌面)下还提供了各种疑难解答方案的选项,这些过去对我有帮助。

简要浏览以前的Docker发行说明。 当然,过去似乎有可能破坏Docker Engine;有证据表明,此后该引擎已经迭代修复。