docker - 为什么 vscode 的远程资源管理器会得到旧容器的列表?(码头工人)
问题描述
我成功通过vscode
. 顺便说一句,过去的容器列表是从remote explorer
. vscode
如果您查看此容器列表,它们显然是由我几天前下载的图像制成的容器。我不知道为什么会这样。
想必是settings.json文件有问题或者是某个日志有问题。
我在 vscode 中按 f1 并选择 Remote-Containers: Attach to Running Container...
然后在终端中自动输入 docker 命令。在这里,出现了一个我不知道它来自哪里的容器(b25ee2cb9162)。
运行此容器后,将打开一个带有消息的新窗口Starting Dev Container
。
这是我说几天前下载的容器列表。这就是 vscode 向我展示的。
发生这种情况的原因是什么?
解决方案
您看到的那些容器与您运行的那些容器相似docker container ls
。您看到的容器已经退出并且不会被 Docker 自动清理,除非在 CLI--rm
选项中指定。
--rm 选项的文档很好地解释了这个原因:
默认情况下,容器的文件系统即使在容器退出后仍然存在。这使得调试更容易(因为您可以检查最终状态)并且默认情况下保留所有数据。但是如果你正在运行短期的前台进程,这些容器文件系统真的会堆积起来。如果您希望 Docker 在容器退出时自动清理容器并删除文件系统,则可以添加 --rm 标志:
从这个关于这些非运行容器占用系统资源的答案中,您不必担心这些占用大量空间期望最小的磁盘空间。
要删除这些容器,您有几个选择:
[抢占式] 运行容器时使用 --rm 标志
您可以在使用 Docker 运行容器时传递--rm
标志,以便在容器退出后删除容器,这样旧容器就不会堆积。
正如文档所提到的,缺点是在容器退出后,如果容器内部发生故障,则很难调试容器退出的原因。
- 如果使用 docker run,请参阅此处的文档:https ://docs.docker.com/engine/reference/run/#clean-up---rm
- 如果使用 docker-compose run,请参阅此答案
从命令行清理现有容器
使用该docker container prune
命令删除所有停止的容器。
- 请参阅此处的文档:https ://docs.docker.com/engine/reference/commandline/container_prune/
- 如果您正在寻找其他选项,请参阅这个相关的 SO 答案:
从 VSCode 清理容器
VSCode Docker Containers Extension如果您打开命令面板并输入,则清理容器Docker Containers: Remove
或者您可以简单地右键单击这些容器。
推荐阅读
- java - 嵌入式 Kafka 单元测试 Akka Java 期间的 AskTimeoutException
- sql - 修复基于 URL 内容的 SQL 注入
- delimiter - 如何在 Hybris 中更改导出数据中的分隔符?
- android - 使用数据绑定在 recyclerview 中显示行的弹出菜单
- javascript - otpInputs 不会将focusedBorderColor 更改为其他颜色
- php - Laravel 雄辩:类闭包的对象无法转换为字符串连接查询
- pandas - 将 PySpark 和 DBSCAN 与 pandas_udf 相结合
- android - 跟踪点或矩形并用另一个垫子替换
- c# - 如何提高方法的性能
- r - 归一化不同的预期输出