更新后如何删除旧服务图像?

How do I remove old service images after an update?

我正在玩 Docker Swarm。我已经部署了一项服务并执行了几次更新以查看其工作原理。我观察到 docker 正在为服务保留旧图像。

我该如何清理它们?


root@picday-manager:~# docker service ps picday
ID            NAME          IMAGE                   NODE            DESIRED STATE  CURRENT STATE            ERROR  PORTS
bk6pw0t8vw4r  picday.1      ischyrus/picday:latest  picday-manager  Running        Running 6 minutes ago
ocbcjpnc71e6   \_ picday.1  ischyrus/picday:latest  picday-manager  Shutdown       Shutdown 6 minutes ago
lcqqhbp8d99q   \_ picday.1  ischyrus/picday:latest  picday-manager  Shutdown       Shutdown 11 minutes ago
db7mco0d4uk0  picday.2      ischyrus/picday:latest  picday-manager  Running        Running 6 minutes ago
z43p0lcdicx4   \_ picday.2  ischyrus/picday:latest  picday-manager  Shutdown       Shutdown 6 minutes ago

这些是容器,不是图像。在 docker 中,两者之间存在相当大的差异(图像是用于创建容器的定义)。在群服务内部,它们被称为任务。要调整默认保留多少 docker,您可以更改全局阈值:

docker swarm update --task-history-limit 1

默认值为 5。

要删除单个容器,您可以从主机中删除容器 运行:

docker container ls -a | grep picday
docker container rm <container id>