正在清理 Service Fabric 群集上的旧 Docker 映像
Cleaning up old Docker images on Service Fabric cluster
我有一个 Service Fabric 集群,上面有 5 个 Windows 虚拟机。我部署的应用程序是大约 10 个不同容器的集合。每次部署时,我都会使用内部版本号增加容器的标签。例如:
foo.azurecr.io/api:50
foo.azurecr.io/web:50
我们的构建系统不断构建每个服务,对其进行标记,将其推送到 Azure,递增 ApplicationManifest.xml 文件中的所有图像,然后将应用程序部署到 Azure。我们可能一天构建几次新版本。
这很好用,但在几周的时间里,每个虚拟机上的磁盘 space 都被填满了。这是因为每个 VM 仍然有所有那些旧的 Docker 图像占用磁盘 space。看看现在,周围有大约 50 场旧照片。最终,这导致部署失败。
我的问题: 是否有清理 Docker 图片的标准方法?现在,我唯一的想法是创建某种 Windows 调度程序任务,每天运行 docker image prune --all
之类的。但是,在某些时候我们希望能够根据需要即时创建新的 VM,因此我宁愿每个 VM 都是一个 "stock" 映像。另一个想法是每次都使用相同的标签,例如 api:latest
和 web:latest
。但是,我必须想办法让每个虚拟机发出 docker pull
命令来获取最新版本的映像。
有没有人解决过这个问题?
您可以将 PruneContainerImages
配置为 True
。这将使 Service Fabric 运行时能够删除未使用的容器映像。参见 this guide
我有一个 Service Fabric 集群,上面有 5 个 Windows 虚拟机。我部署的应用程序是大约 10 个不同容器的集合。每次部署时,我都会使用内部版本号增加容器的标签。例如:
foo.azurecr.io/api:50
foo.azurecr.io/web:50
我们的构建系统不断构建每个服务,对其进行标记,将其推送到 Azure,递增 ApplicationManifest.xml 文件中的所有图像,然后将应用程序部署到 Azure。我们可能一天构建几次新版本。
这很好用,但在几周的时间里,每个虚拟机上的磁盘 space 都被填满了。这是因为每个 VM 仍然有所有那些旧的 Docker 图像占用磁盘 space。看看现在,周围有大约 50 场旧照片。最终,这导致部署失败。
我的问题: 是否有清理 Docker 图片的标准方法?现在,我唯一的想法是创建某种 Windows 调度程序任务,每天运行 docker image prune --all
之类的。但是,在某些时候我们希望能够根据需要即时创建新的 VM,因此我宁愿每个 VM 都是一个 "stock" 映像。另一个想法是每次都使用相同的标签,例如 api:latest
和 web:latest
。但是,我必须想办法让每个虚拟机发出 docker pull
命令来获取最新版本的映像。
有没有人解决过这个问题?
您可以将 PruneContainerImages
配置为 True
。这将使 Service Fabric 运行时能够删除未使用的容器映像。参见 this guide