diff --git a/pkg/agent/containerd/containerd.go b/pkg/agent/containerd/containerd.go index bf55cbb91a..4af199e52c 100644 --- a/pkg/agent/containerd/containerd.go +++ b/pkg/agent/containerd/containerd.go @@ -353,19 +353,23 @@ func prePullImages(ctx context.Context, client *containerd.Client, imageClient r scanner := bufio.NewScanner(imageList) for scanner.Scan() { name := strings.TrimSpace(scanner.Text()) - if _, err := imageClient.ImageStatus(ctx, &runtimeapi.ImageStatusRequest{ + + if status, err := imageClient.ImageStatus(ctx, &runtimeapi.ImageStatusRequest{ Image: &runtimeapi.ImageSpec{ Image: name, }, - }); err == nil { + }); err == nil && status.Image != nil && len(status.Image.RepoTags) > 0 { logrus.Infof("Image %s has already been pulled", name) - if image, err := imageService.Get(ctx, name); err != nil { - errs = append(errs, err) - } else { - images = append(images, image) + for _, tag := range status.Image.RepoTags { + if image, err := imageService.Get(ctx, tag); err != nil { + errs = append(errs, err) + } else { + images = append(images, image) + } } continue } + logrus.Infof("Pulling image %s", name) if _, err := imageClient.PullImage(ctx, &runtimeapi.PullImageRequest{ Image: &runtimeapi.ImageSpec{