Docker
Running Lumier with Docker
Quick start (ephemeral)
Run a macOS VM that resets when you stop it:
docker run -it --rm \
-p 8006:8006 \
-e VM_NAME=my-vm \
-e VERSION=ghcr.io/trycua/macos-sequoia-cua:latest \
-e CPU_CORES=4 \
-e RAM_SIZE=8192 \
trycua/lumier:latestOpen http://localhost:8006 in your browser.
In ephemeral mode, changes are lost when you stop the container. See below for persistent storage.
Persistent storage
Keep your VM state between sessions:
mkdir -p storage
docker run -it --rm \
-p 8006:8006 \
-v $(pwd)/storage:/storage \
-e VM_NAME=my-vm \
-e VERSION=ghcr.io/trycua/macos-sequoia-cua:latest \
-e CPU_CORES=4 \
-e RAM_SIZE=8192 \
-e HOST_STORAGE_PATH=$(pwd)/storage \
trycua/lumier:latestThe -v mount and HOST_STORAGE_PATH work together to save VM data on your Mac.
Share files with the VM
Add a shared folder accessible at /Volumes/My Shared Files inside the VM:
mkdir -p storage shared
docker run -it --rm \
-p 8006:8006 \
-v $(pwd)/storage:/storage \
-v $(pwd)/shared:/shared \
-e VM_NAME=my-vm \
-e VERSION=ghcr.io/trycua/macos-sequoia-cua:latest \
-e CPU_CORES=4 \
-e RAM_SIZE=8192 \
-e HOST_STORAGE_PATH=$(pwd)/storage \
-e HOST_SHARED_PATH=$(pwd)/shared \
trycua/lumier:latestFiles you put in ./shared appear in the VM, and vice versa.
Run scripts on VM startup
Create shared/lifecycle/on-logon.sh to run commands when the VM boots:
mkdir -p shared/lifecycle
cat > shared/lifecycle/on-logon.sh << 'EOF'
#!/usr/bin/env bash
# Example: create a file on the desktop
echo "Hello from Lumier!" > /Users/lume/Desktop/hello.txt
# Add your setup commands here:
# - Install packages
# - Configure environment
# - Start services
EOF
chmod +x shared/lifecycle/on-logon.shThe script runs as the lume user and can access:
/Users/lume— home directory/Volumes/My Shared Files— shared folder
Environment variables
| Variable | Description | Example |
|---|---|---|
VM_NAME | Name for the VM | my-vm |
VERSION | macOS image to use | ghcr.io/trycua/macos-sequoia-cua:latest |
CPU_CORES | CPU cores | 4 |
RAM_SIZE | Memory in MB | 8192 |
HOST_STORAGE_PATH | Persistent storage path | $(pwd)/storage |
HOST_SHARED_PATH | Shared folder path | $(pwd)/shared |
Change the port
If port 8006 is in use, map to a different port:
docker run -it --rm \
-p 9000:8006 \
# ... rest of options
trycua/lumier:latestThen access at http://localhost:9000.
Was this page helpful?