我正在使用 DockerClient 并且我有一个图像集合,我需要删除所有这些,但不是最新的,所以我想按升序对集合进行排序,我有一个创建的字段,它是一个字符串日期的数字表示为 1632912516。
我尝试了下一个:
public void checkingTest() throws DockerException, InterruptedException {
try {
List<com.spotify.docker.client.messages.Image> sortedImages = getImages();
sortedImages.stream()
.filter(img -> !img.id().equals(sortedImages.get(sortedImages.size() - 1).id()))
.forEach(img -> {
try {
dockerClient.removeImage(img.id());
}
catch (DockerException e) {
e.printStackTrace();
}
catch (InterruptedException e) {
e.printStackTrace();
}
});
}
catch (DockerCertificateException e) {
e.printStackTrace();
}
}
private List<com.spotify.docker.client.messages.Image> getImages()
throws DockerCertificateException, DockerException, InterruptedException
{
final DockerClient dockerClient =
DefaultDockerClient.fromEnv().connectTimeoutMillis(TimeUnit.SECONDS.toMillis(3)).build();
return dockerClient.listImages()
.stream()
.filter(image -> image.labels() != null && image.labels().containsKey("image"))
.sorted((o1, o2) -> o2.created().compareTo(o1.created()))
.collect(
Collectors.toList());
}
但是我看到,在getImages
方法中集合没有排序,所以我认为我需要将创建的字段转换为不同的字符串来实现这一点。
有任何想法吗?