docker - 避免在 Docker 中有多个容器
问题描述
我正在学习 docker,经常需要多次构建容器。
我正在使用以下命令:docker build -t sometag:someversion .
每次都会创建一个新容器(正如我后来发现的那样)。
有没有办法在每次构建发生后只拥有一个容器?
或者我只需要在容器退出后使用这样的命令删除容器:docker run --rm my-image
而不是使用docker build
?
解决方案
您混合图像(基本上是“蓝图”,以及“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"*
这很方便......但不是很微妙!
推荐阅读
- makefile - 如何将 Makefile 模式匹配限制为选项列表
- reactjs - 如何访问函数中的道具?
- python - keras 上的 Tensorboard 回调在训练多个网络时会给出 InvalidArgumentError
- arrays - 如何在 16 位 (15:0) 的数组中将特定位设置为 1 并同时清除剩余位
- json - 将结构转换为 []json.RawMessage
- python - 如何根据其他列中的一个而不是两个条件删除重复项
- c# - 如何从管理配置文件页面在 Asp.Net core 2.1 中为 ApplicationUser 使用扩展模型?
- vue.js - 尝试使用 Axios 使用来自 HTTP 请求的数据呈现 Vue 组件
- r - 在 dplyr 中计算分组数据的条件摘要
- azure - 如何将 CosmosDb 与分区键一起用作流分析输出?