Documentation
¶
Overview ¶
Package dockerprune keeps the Docker images and build cache of a lab machine under a size: the unused images created longest ago go first, the build cache is pruned by Docker's own least-recently-used order. An image a container uses, or one a kind lab's node holds, is never removed.
Index ¶
- Constants
- Variables
- func Importer(args []string) bool
- func Normalize(ref string) string
- func ParseSize(s string) (int64, error)
- func PruneBuildCache(ctx context.Context, d Docker, keep int64) error
- func TrimImages(ctx context.Context, d Docker, candidates []Image, total, target int64, ...) (freed int64, removed int, err error)
- type Docker
- type Image
- type InUse
- type Usage
Constants ¶
const KindLabel = "io.x-k8s.kind.cluster"
KindLabel is the label kind puts on its node containers.
Variables ¶
var ErrBusy = errors.New("an image import runs")
ErrBusy stops a trim: an image import or build began while it ran.
Functions ¶
func Importer ¶
Importer says an argument vector loads or builds images: kind load and kind create (which loads its node image), docker build, load, save and import, buildx, and containerd's ctr import. The verb is one of the first three words that are no flag: docker image load, docker --context x build, ctr -n k8s.io images import.
func Normalize ¶
Normalize names a reference as containerd does: docker.io/library/nginx:1 for nginx:1.
func ParseSize ¶
ParseSize reads a size as docker prints it: decimal units, "1.5GB", "512kB", "0B", with an optional percentage after a space.
func PruneBuildCache ¶
PruneBuildCache prunes the build cache down to keep bytes; the cache a build uses stays.
func TrimImages ¶
func TrimImages(ctx context.Context, d Docker, candidates []Image, total, target int64, busy func() bool) (freed int64, removed int, err error)
TrimImages removes candidates in order until the images' size, from total, is at most target, asking busy before each removal. An image Docker refuses to remove (a container started on it since) is skipped. It returns what it freed by the images' unique sizes and how many it removed.
Types ¶
type Image ¶
type Image struct {
ID string
// Refs are its repository:tag names, none for a dangling image.
Refs []string
Digest string
Created time.Time
// Unique is what removing it frees: the layers no other image shares.
Unique int64
Containers int
}
Image is one image of the machine's Docker.
func Candidates ¶
Candidates are the images a trim may remove, in the order it removes them: dangling ones first, then the ones created longest ago.
type InUse ¶
InUse are the images that must stay: by ID, normalized reference and digest.
func KindImages ¶
KindImages are the images every kind node holds, and the node images themselves through the containers using them. A node that is not running cannot say what it holds: then nothing is known to be unused, and the call fails.