Skip to main content
Inspect and prune the local OCI image cache: the images that sandbox creation has already pulled. Everything is reached through the package-level Image value, or through an ImageHandle once you hold one.
import m "github.com/superradcompany/microsandbox/sdk/go"

Typical flow

import m "github.com/superradcompany/microsandbox/sdk/go"

images, err := m.Image.List(ctx)        // 1. enumerate the cache
if err != nil {
    return err
}
for _, img := range images {
    fmt.Println(img.Reference(), img.LayerCount())
}

report, err := m.Image.Prune(ctx)       // 2. reclaim unused data
if err != nil {
    return err
}
fmt.Println(report.LayersRemoved, "layers removed")

Functions

Image.Get()

func (imageFactory) Get(ctx context.Context, reference string) (*ImageHandle, error)
img, err := m.Image.Get(ctx, "python:3.12")
if err != nil {
    return err
}
fmt.Println(img.ManifestDigest())
Fetch one cached image by reference. Returns ErrImageNotFound when no image with that reference is present in the local cache.

Parameters

ctxcontext.Context
Cancels the lookup.
referencestring
Image reference, e.g. “python:3.12”.

Returns

Metadata handle for the cached image.
error
ErrImageNotFound when the reference is not cached.

Image.List()

func (imageFactory) List(ctx context.Context) ([]*ImageHandle, error)
images, err := m.Image.List(ctx)
if err != nil {
    return err
}
for _, img := range images {
    fmt.Println(img.Reference(), img.LayerCount())
}
Return every cached image, ordered by creation time (newest first).

Parameters

ctxcontext.Context
Cancels the listing.

Returns

All cached image handles, newest first.
error
Non-nil on failure.

Image.Inspect()

func (imageFactory) Inspect(ctx context.Context, reference string) (*ImageDetail, error)
detail, err := m.Image.Inspect(ctx, "python:3.12")
if err != nil {
    return err
}
fmt.Println(detail.Config.Entrypoint, len(detail.Layers), "layers")
Return the full detail for a cached image: the ImageHandle plus the parsed OCI config and the layer list.

Parameters

ctxcontext.Context
Cancels the inspection.
referencestring
Image reference, e.g. “python:3.12”.

Returns

Handle, OCI config, and layers.
error
ErrImageNotFound when the reference is not cached.

Image.Remove()

func (imageFactory) Remove(ctx context.Context, reference string, force bool) error
if err := m.Image.Remove(ctx, "old:tag", false); err != nil {
    return err
}
Delete a cached image. When force is false, sandboxes that still reference the image cause the call to fail with ErrImageInUse.

Parameters

ctxcontext.Context
Cancels the removal.
referencestring
Image reference to delete.
forcebool
When true, remove even if sandboxes still reference it.

Returns

error
ErrImageInUse when in use and force is false.

Image.Prune()

func (imageFactory) Prune(ctx context.Context) (*ImagePruneReport, error)
report, err := m.Image.Prune(ctx)
if err != nil {
    return err
}
fmt.Println(report.LayersRemoved, "layers removed")
Remove cached image data that is not used by any sandbox. Returns a report tallying the image refs, manifests, layers, fsmeta files, and VMDK files removed, plus bytes reclaimed.

Parameters

ctxcontext.Context
Cancels the prune.

Returns

Summary of what was reclaimed.
error
Non-nil on failure.

Methods

Instance methods on *ImageHandle, the metadata reference returned by Image.Get and Image.List. The accessors are pure reads of cached metadata; only Remove and Inspect take a context and reach the runtime.

h.Reference()

func (h *ImageHandle) Reference() string
The image reference, e.g. "docker.io/library/python:3.12".

Returns

string
Image reference.

h.ManifestDigest()

func (h *ImageHandle) ManifestDigest() string
The content-addressable manifest digest, or empty when unknown.

Returns

string
Manifest digest, or empty.

h.Architecture()

func (h *ImageHandle) Architecture() string
The architecture resolved during the pull, or empty.

Returns

string
Architecture, or empty.

h.OS()

func (h *ImageHandle) OS() string
The operating system resolved during the pull, or empty.

Returns

string
Operating system, or empty.

h.LayerCount()

func (h *ImageHandle) LayerCount() uint
The number of layers in the image.

Returns

uint
Layer count.

h.SizeBytes()

func (h *ImageHandle) SizeBytes() *int64
The total image size in bytes, or nil when unknown.

Returns

*int64
Total size in bytes, or nil.

h.CreatedAt()

func (h *ImageHandle) CreatedAt() time.Time
When this image was first pulled. Returns the zero time.Time when unknown.

Returns

time.Time
First-pulled time, or the zero value.

h.LastUsedAt()

func (h *ImageHandle) LastUsedAt() time.Time
When this image was last referenced. Returns the zero time.Time when unknown.

Returns

time.Time
Last-referenced time, or the zero value.

h.Remove()

func (h *ImageHandle) Remove(ctx context.Context, force bool) error
img, err := m.Image.Get(ctx, "old:tag")
if err != nil {
    return err
}
if err := img.Remove(ctx, false); err != nil {
    return err
}
Delete this image. Equivalent to Image.Remove(ctx, h.Reference(), force). When force is false, sandboxes that still reference the image cause the call to fail with ErrImageInUse.

Parameters

ctxcontext.Context
Cancels the removal.
forcebool
When true, remove even if sandboxes still reference it.

Returns

error
ErrImageInUse when in use and force is false.

h.Inspect()

func (h *ImageHandle) Inspect(ctx context.Context) (*ImageDetail, error)
img, err := m.Image.Get(ctx, "python:3.12")
if err != nil {
    return err
}
detail, err := img.Inspect(ctx)
if err != nil {
    return err
}
fmt.Println(detail.Config.WorkingDir)
Return the full detail for this image. Equivalent to Image.Inspect(ctx, h.Reference()).

Parameters

ctxcontext.Context
Cancels the inspection.

Returns

Handle, OCI config, and layers.
error
Non-nil on failure.

Types

ImageHandle

Returned by Image.Get() · Image.List()

A lightweight metadata reference to a cached OCI image. Fields are unexported; read them through the accessor methods below. Embedded in ImageDetail.
MethodReturnsDescription
Reference()stringImage reference
ManifestDigest()stringContent-addressable manifest digest, or empty
Architecture()stringResolved architecture, or empty
OS()stringResolved operating system, or empty
LayerCount()uintNumber of layers
SizeBytes()*int64Total size in bytes, or nil when unknown
CreatedAt()time.TimeFirst-pulled time, or the zero value
LastUsedAt()time.TimeLast-referenced time, or the zero value
Remove(ctx, force)errorDelete this image
Inspect(ctx)(*ImageDetail, error)Fetch full detail for this image

ImageDetail

Returned by Image.Inspect() · Inspect()

Bundles an ImageHandle (embedded, so all its accessors are promoted) with the parsed OCI config and layer list.
type ImageDetail struct {
    *ImageHandle
    Config *ImageConfig
    Layers []ImageLayer
}
FieldTypeDescription
*ImageHandle*ImageHandleEmbedded metadata handle (accessors promoted)
Config*ImageConfigParsed OCI config block
Layers[]ImageLayerLayers in manifest order

ImageConfig

Used by ImageDetail.Config

The parsed OCI config block.
FieldTypeDescription
DigeststringConfig blob digest
Env[]stringEnvironment variables (KEY=VALUE)
Cmd[]stringDefault command
Entrypoint[]stringEntrypoint
WorkingDirstringWorking directory
UserstringDefault user
Labelsmap[string]stringOCI labels
StopSignalstringStop signal

ImageLayer

Used by ImageDetail.Layers

One layer of an image manifest.
FieldTypeDescription
DiffIDstringUncompressed layer diff ID
BlobDigeststringCompressed blob digest
MediaTypestringLayer media type
CompressedSizeBytes*int64Compressed size in bytes, or nil
ErofsSizeBytes*int64EROFS size in bytes, or nil
Positionint32Index in the layer stack

ImagePruneReport

Returned by Image.Prune()

Summarizes the artifacts removed by Image.Prune.
FieldTypeDescription
ImageRefsRemoveduint32Image references removed
ManifestsRemoveduint32Manifests removed
LayersRemoveduint32Layers removed
FsmetaRemoveduint32Fsmeta files removed
VMDKRemoveduint32VMDK files removed
BytesReclaimed*uint64Bytes reclaimed, or nil when unknown