首页 > 解决方案 > 为什么 vscode 的远程资源管理器会得到旧容器的列表?(码头工人)

问题描述

我成功通过vscode. 顺便说一句,过去的容器列表是从remote explorer. vscode如果您查看此容器列表,它们显然是由我几天前下载的图像制成的容器。我不知道为什么会这样。

想必是settings.json文件有问题或者是某个日志有问题。

我在 vscode 中按 f1 并选择 Remote-Containers: Attach to Running Container...

远程容器截图

然后在终端中自动输入 docker 命令。在这里,出现了一个我不知道它来自哪里的容器(b25ee2cb9162)。

终端输出截图

运行此容器后,将打开一个带有消息的新窗口Starting Dev Container

这是我说几天前下载的容器列表。这就是 vscode 向我展示的。

屏幕截图中列出的已停止容器

发生这种情况的原因是什么?

标签: dockervisual-studio-code

解决方案


您看到的那些容器与您运行的那些容器相似docker container ls。您看到的容器已经退出并且不会被 Docker 自动清理,除非在 CLI--rm选项中指定。

--rm 选项的文档很好地解释了这个原因:

默认情况下,容器的文件系统即使在容器退出后仍然存在。这使得调试更容易(因为您可以检查最终状态)并且默认情况下保留所有数据。但是如果你正在运行短期的前台进程,这些容器文件系统真的会堆积起来。如果您希望 Docker 在容器退出时自动清理容器并删除文件系统,则可以添加 --rm 标志:

这个关于这些非运行容器占用系统资源的答案中,您不必担心这些占用大量空间期望最小的磁盘空间。

要删除这些容器,您有几个选择:

[抢占式] 运行容器时使用 --rm 标志

您可以在使用 Docker 运行容器时传递--rm标志,以便在容器退出后删除容器,这样旧容器就不会堆积。

正如文档所提到的,缺点是在容器退出后,如果容器内部发生故障,则很难调试容器退出的原因。

从命令行清理现有容器

使用该docker container prune命令删除所有停止的容器。

从 VSCode 清理容器

VSCode Docker Containers Extension如果您打开命令面板并输入,则清理容器Docker Containers: Remove

或者您可以简单地右键单击这些容器。

docker 容器的屏幕截图删除

提示删除容器的屏幕截图


推荐阅读