Named volumes persist independently of sandboxes and are stored at ~/.microsandbox/volumes/.
msb volume create
msb volume create my-data
msb volume create my-data --size 10G
| Flag | Description |
|---|
--size | Storage quota (e.g., 100M, 1G, 10G) |
--from | Initialize from a path |
-q, --quiet | Only print the volume name |
msb volume ls
msb volume ls
msb volume ls --format json
msb volume inspect
msb volume inspect my-data
msb volume rm
msb volume rm my-data
msb volume rm cache-1 cache-2 # Remove multiple
msb volume rm --force my-data # Remove even if in use
Using volumes with sandboxes
Mount a named volume when creating or running a sandbox. The volume name goes before the colon, the guest path after.
# Create a volume, then mount it
msb volume create app-data --size 5G
msb run --name worker -v app-data:/data python:3.11
# Share between sandboxes
msb run --name writer -v shared:/data alpine -- sh -c "echo hello > /data/msg.txt"
msb run --name reader -v shared:/data alpine -- cat /data/msg.txt
The CLI distinguishes bind mounts from named volumes by looking for a / or . prefix. ./src:/app is a bind mount (host path). myvolume:/data is a named volume. This matches Docker’s convention.