如何清除DC/OS 1.11.0中特定服务ID的历史记录?
解决Docker服务ID重复启动后历史记录残留的问题
我完全懂你的困扰——测试时部分服务ID启动失败,想复用同一个ID启动新容器,结果旧的任务历史还留着,根本分不清是新容器还是旧容器出的问题。其实Docker默认不会在删除服务时自动清理已停止的任务记录,这就是症结所在,下面给你一套彻底解决的操作步骤:
第一步:删除目标服务
先把出问题的服务停掉并删除:
docker service rm <你的服务ID>
第二步:清理残留的任务历史
服务删除后,关联的已停止任务还会留在集群里,必须手动清理它们。用这条命令可以一次性删除该服务对应的所有已停止任务:
docker task rm $(docker service ps -f "desired-state=shutdown" <你的服务ID> -q)
拆解一下这条命令的作用:
docker service ps -f "desired-state=shutdown" <你的服务ID> -q:筛选出该服务下所有已停止的任务,只输出任务IDdocker task rm:批量删除这些任务ID对应的历史记录
可选优化:控制新服务的历史保留
如果不想每次都手动清理,下次启动服务时可以加上--task-history-limit参数,限制保留的任务历史数量,比如设置为0就不会保留任何历史:
docker service create --task-history-limit 0 --name <你的服务ID> <镜像名>
这样新服务运行时,旧的历史记录不会干扰,也能更清晰地追踪新容器的状态。
现在你再用同一个服务ID启动新容器,就能完全区分新旧实例的运行情况了!
内容的提问来源于stack exchange,提问作者Karl Öhrn
相关产品推荐
相关产品推荐

