我有一个带有5个Windows VM的Service Fabric群集。我部署的应用程序是大约10个不同容器的集合。每次部署时,都会使用内部版本号增加容器的标签。例如:
foo.azurecr.io/api:50
foo.azurecr.io/web:50
我们的构建系统会不断构建每个服务,对其进行标记,将其推送到Azure,递增ApplicationManifest.xml文件中的所有映像,然后将应用程序部署到Azure。我们可能一天要创建几次新版本。
这很好用,但是在数周的时间内,每个VM上的磁盘空间已满。这是因为每个VM仍然具有所有那些旧的Docker映像占用磁盘空间。现在看,周围大约有50幅旧图像。最终,这导致部署失败。
我的问题:是否存在清理Docker映像的标准方法?现在,我唯一的想法是创建某种Windows Scheduler任务,该任务每天运行docker image prune --all
。但是,在某些时候,我们希望能够根据需要即时创建新的VM,所以我宁愿每个VM都是一个“原始”映像。另一个想法是每次使用相同的标签,例如api:latest
和web:latest
。但是,然后,我必须想办法让每个VM发出docker pull
命令以获取映像的最新版本。
以前有人解决过这个问题吗?