首页 > 解决方案 > 避免在 Docker 中有多个容器

问题描述

我正在学习 docker,经常需要多次构建容器。

我正在使用以下命令:docker build -t sometag:someversion .每次都会创建一个新容器(正如我后来发现的那样)。

有没有办法在每次构建发生后只拥有一个容器?

或者我只需要在容器退出后使用这样的命令删除容器:docker run --rm my-image而不是使用docker build

标签: docker

解决方案


您混合图像(基本上是“蓝图”,以及“docker build”的结果)和容器:这些是将从该图像运行的实例。

当您执行docker build时,即使没有标签规范,它仍然会替换以前的image,但不会破坏它。相反,它将取消标记(您将看到一个标记)。

当您执行docker run时,您将从此映像创建一个容器。当您停止它时,它不会删除容器:您可以使用“docker ps -a” 命令查看所有停止的容器。如果你想删除它,你必须“docker rm”它。

好的,但有时,您想做一些更有效(和一般)的清洁......例如,当您有未移除的容器或旧的悬空图像时。在这种情况下,docker 提供了“修剪”操作,可以在任何类型的 docker 对象上执行:图像、卷、容器、网络、配置和机密(我可能忘记了一些,但这是基本思想)。为此,请键入

'docker <one among above object> prune' 

(这很神奇)....

请注意,如果其中一些对象仍链接到其他未删除的对象,则需要先“修剪”它们:例如,如果您有一个停止(但未删除)的容器仍在使用未标记的图像,则必须删除容器第一!

另请注意,如果不再使用它们,您可能必须在“ image prune ”之后下载一些图像(如果它们不再可用,这是一个问题!)

最终,您可以使用系统 prune 清理它们:

"docker system prune"*

这很方便......但不是很微妙!


推荐阅读