Skip to content

Commit

Permalink
feat: Fall back to image from local Docker runtime
Browse files Browse the repository at this point in the history
If the requested image does not exist in a remote registry, then use the
image from the local Docker runtime if it is available there.
  • Loading branch information
jimmidyson committed Feb 9, 2022
1 parent e885ba3 commit 92b3fbf
Showing 1 changed file with 27 additions and 10 deletions.
37 changes: 27 additions & 10 deletions cmd/create/imagebundle/image_bundle.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,15 +134,26 @@ func NewCommand(out output.Output) *cobra.Command {
),
)

srcSkopeoScheme := "docker://"
srcImageManifestList, skopeoStdout, skopeoStderr, err := skopeoRunner.InspectManifest(
context.TODO(),
fmt.Sprintf("docker://%s", srcImageName),
context.Background(),
fmt.Sprintf("%s%s", srcSkopeoScheme, srcImageName),
)
if err != nil {
out.EndOperation(false)
out.Infof("---skopeo stdout---:\n%s", skopeoStdout)
out.Infof("---skopeo stderr---:\n%s", skopeoStderr)
return err
srcSkopeoScheme = "docker-daemon:"
srcDaemonImageManifestList, skopeoDaemonStdout, skopeoDaemonStderr, err := skopeoRunner.InspectManifest(
context.Background(),
fmt.Sprintf("%s%s", srcSkopeoScheme, srcImageName),
)
if err != nil {
out.EndOperation(false)
out.Infof("---skopeo stdout---:\n%s", skopeoStdout)
out.Infof("---skopeo stderr---:\n%s", skopeoStderr)
return err
}
srcImageManifestList = srcDaemonImageManifestList
skopeoStdout = append(skopeoStdout, skopeoDaemonStdout...)
skopeoStderr = append(skopeoStderr, skopeoDaemonStderr...)
}
out.V(4).Infof("---skopeo stdout---:\n%s", skopeoStdout)
out.V(4).Infof("---skopeo stderr---:\n%s", skopeoStderr)
Expand Down Expand Up @@ -179,13 +190,19 @@ func NewCommand(out output.Output) *cobra.Command {
}
}

srcImageToCopy := fmt.Sprintf("%s/%s@%s", registryName,
imageName,
platformManifest.Digest)
if srcSkopeoScheme != "docker://" {
srcImageToCopy = srcImageName
}

skopeoStdout, skopeoStderr, err := skopeoRunner.Copy(
context.TODO(),
fmt.Sprintf(
"docker://%s/%s@%s",
registryName,
imageName,
platformManifest.Digest,
"%s%s",
srcSkopeoScheme,
srcImageToCopy,
),
fmt.Sprintf(
"docker://%s/%s@%s",
Expand Down

0 comments on commit 92b3fbf

Please sign in to comment.