microsandbox pulls images from OCI-compatible registries. If you build an image locally with docker build, microsandbox can’t access it directly from Docker’s local store. The workaround is to run a local registry and push your image there.
Step 1: Start a local registry
Run a local OCI registry on port 5050:
docker run -d -p 5050:5000 --name registry registry:2
Port 5000 is used by AirPlay on macOS. This guide uses port 5050 to avoid conflicts.
Step 2: Build, tag, and push your image
Build your Docker image and tag it for the local registry:
docker build -t localhost:5050/my-image:latest .
If you already have an existing image, re-tag it:
docker tag my-image:latest localhost:5050/my-image:latest
Push to the local registry:
docker push localhost:5050/my-image:latest
Step 3: Pull with microsandbox
Since the local registry runs over plain HTTP, use the --insecure flag:
msb pull localhost:5050/my-image:latest --insecure
Step 4: Use it in microsandbox
let sb = Sandbox::builder("worker")
.image("localhost:5050/my-image:latest")
.registry(|r| r.insecure())
.create()
.await?;
For persistent configuration that applies to all CLI and SDK operations, add the registry to ~/.microsandbox/config.json instead. See Registry TLS.