Skip to content

You are viewing documentation for Instruqt 2.0 Labs. For Tracks documentation, please visit docs.instruqt.com.

Image builder


Image builder is your team’s catalog of the images a lab’s virtual machines boot from, and the place you build your own. You start a build session on top of an existing image, configure the running machine through a terminal and a file editor in the browser, and publish what you end up with as a new version.

There is no Packer file, no build pipeline and nothing to run locally. The machine you are configuring is the machine that gets published.

  • Move slow work out of lab startup. A package install that takes three minutes at boot takes it once, at build time, instead of once per session.
  • Share one environment across labs. A single image every lab in the team boots from, so a fix lands in one place.
  • Configure what a script cannot. Interactive installers, desktop applications, services that have to be set up in a particular order.

If all you need is a config file or one extra package, a VM startup_script is simpler than building an image. Build an image when the setup is slow, shared, or awkward to script.

An image is a catalog entry owned by one team. Its reference is team-slug/image-name — for example acme/dev-tools — and that is the string a lab writes. The name is fixed once the image exists, because labs pin it.

A version is a tag on that image: v1, v2, 2.4.1. A lab can pin one, or leave the tag off and let the platform resolve it.

A digest is the actual published artifact under a tag. Each version card in the UI lists its digests newest first, and the newest published one is marked Live — that is what the tag resolves to now.

Each published version is a disk overlay chained onto the image it was built from. Booting a lab walks that chain back to the base, which is why publishing a small change produces a small artifact rather than a whole new disk.

Instruqt maintains a set of public base images that every team can build on and boot from. They belong to the instruqt team, they are protected, and you refer to them by their bare name.

ImageVersionsContains
ubuntu22.04, 24.04, latestUbuntu LTS
debian11, 12, latestDebian stable
fedora42, 43, 44, latestFedora
centos8, latestCentOS 8 (legacy)
rockylinux8, 9, latestRocky Linux
dockerlatestDocker Engine, preinstalled
k3slatestK3s (lightweight Kubernetes), preinstalled

You cannot publish a new version onto a base image — the catalog is not a team’s to write to. Building on one and publishing saves the result as a new image of your own. The same applies to any team image that is protected.

A build session is a real VM, running for you, with a terminal and a file editor attached. Sessions are private: you only ever see your own, and nobody else can open one of yours.

A session ends in one of four ways:

EndingWhat happens
PublishedThe VM is flattened, pushed to the registry as a version, and torn down.
DiscardedYou chose to throw it away. The VM and everything on it is destroyed.
ExpiredThe session hit its two-hour time limit.
FailedThe session could not start, or a lifecycle step failed. The error is on the draft row.

In every case the VM is gone. Only a publish leaves anything behind.

LimitValueWhat it means
Time limit2 hoursCounted from the moment the VM is up and editable. The session is reclaimed when it runs out.
Idle timeout15 minutesA session nobody is working on is torn down. The builder sends a heartbeat while its tab is open, and warns you before it ends.

An image in the catalog carries one of these:

StatusMeaning
ImportingA disk is being ingested. See Import an image.
DraftA build session exists, but nothing has been published from it yet.
PublishingA version is being pushed to the registry.
PublishedAt least one version is available. Labs can boot from it.
FailedThe last import or publish did not finish.

An image is Private — only your team can see it and boot labs from it — or Public, meaning every team on Instruqt can. Images you build are private; Instruqt’s base images are public.

PageCovers
Build an imageStarting a session, the terminal and editor, checkpoints, publishing, discarding.
Import an imageBringing in a GCP Compute Engine image or a disk file you already have.
Manage images and versionsThe readme, protection, deleting an image or a single digest, drafts.
Use an image in a labReferencing an image from a vm resource, and how a reference resolves.