Docker Guide
1. Install Docker
Before you can run ChronoRoot, you need the Docker Engine installed on your computer.
Windows Users
- Download: Go to Docker Desktop for Windows and download the installer.
- Install: Run the installer. Ensure the option "Use WSL 2 instead of Hyper-V" is checked (this is usually the default and provides better performance).
- Start: Open "Docker Desktop" from your Start menu and wait for the engine to start.
Linux Users
For the most up-to-date installation instructions specific to your distribution (Ubuntu, Debian, Fedora, CentOS, etc.), please refer to the official Docker documentation:
Post-Installation (Mandatory):
After installing Docker, you must configure it to run without sudo privileges. If you skip this step, the ChronoRoot commands will fail with "Permission Denied."
Run the following command in your terminal:
sudo usermod -aG docker $USER
Note: You must log out and log back in (or restart your computer) for this change to take effect.
Mac Users
- Download: Go to Docker Desktop for Mac.
-
Note: Choose "Apple Chip" for M1/M2/M3 processors, or "Intel Chip" for older Macs.
-
Install: Open the
.dmgfile and drag the Docker icon to your Applications folder. - Start: Open Docker from your Applications folder.
2. Install NVIDIA Support (Linux & Windows)
Required for GPU Segmentation support: To use the segmentation method rapidly, Docker needs access to your NVIDIA GPU.
- Windows: Simply ensure your NVIDIA Drivers are up to date. Docker Desktop handles the rest automatically.
- Linux: You must install the NVIDIA Container Toolkit. Please follow the official setup guide below, as instructions vary by distribution:
- NVIDIA Container Toolkit Installation Guide
Verify GPU Support: Once configured, run this command to verify that Docker can see your GPU:
docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu20.04 nvidia-smi
3. Download the ChronoRoot Image
We offer three versions of the image. For most users, we recommend the latest tag.
docker pull ngaggion/chronoroot:latest
| Image Tag | Contents | Best For... |
|---|---|---|
ngaggion/chronoroot:latest |
App + AI Models + Demo Data | Standard Users |
ngaggion/chronorootbase:full |
Environment + Demo Data | Developers editing source code |
ngaggion/chronorootbase:nodemo |
Minimal Environment | Production/Cluster use |
4. Launching ChronoRoot
We launch the container using your local User ID so that files created inside Docker (results, CSVs) are owned by you, not "root".
Linux
-
Enable GUI Access:
xhost +local:docker -
Run the Container: Replace
/path/to/your/datawith the actual path to your image folder.docker run -it --gpus all \ -u $(id -u):$(id -g) \ -v /etc/passwd:/etc/passwd:ro \ -v /etc/group:/etc/group:ro \ -v "/path/to/your/data":/DATA/ \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ --shm-size=8gb \ ngaggion/chronoroot:latest
Windows (WSL2)
For the Graphical User Interface (GUI) to work on Windows, you must run these commands inside a WSL2 terminal (e.g., Ubuntu for Windows), not PowerShell or Command Prompt.
-
Define your data path: Note that
/mnt/c/corresponds to theC:\drive.# Example: C:\Users\Name\Images becomes: MOUNT="/mnt/c/Users/Name/Images" -
Run the Container:
docker run -it --gpus all \ -u $(id -u):$(id -g) \ -v /etc/passwd:/etc/passwd:ro \ -v /etc/group:/etc/group:ro \ -v "$MOUNT":/DATA/ \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v /mnt/wslg:/mnt/wslg \ -e DISPLAY \ -e WAYLAND_DISPLAY \ -e XDG_RUNTIME_DIR \ -e PULSE_SERVER \ --shm-size=8gb \ ngaggion/chronoroot:latest
macOS
Warning: Docker on macOS cannot access the GPU directly. AI segmentation will rely on the CPU and will be significantly slower. However, Screening and Data Analysis tools remain fully functional. You must install XQuartz to view the interface.
- Configure XQuartz: Open XQuartz preferences, go to Security, and ensure "Allow connections from network clients" is checked. Restart XQuartz.
- Run:
docker run -it \ -v "/path/to/your/data":/DATA/ \ -e DISPLAY=host.docker.internal:0 \ --shm-size=8gb \ ngaggion/chronoroot:latest
5. Usage Inside the Container
Once the terminal prompt changes (e.g., (ChronoRoot) root@container:/app#), use the following commands:
chronoroot: Launch Main Interface.screening: Launch Screening Interface.segmentation: Launch Segmentation Interface.
Where is my data?
Inside the application, navigate to the /DATA/ folder to find the files you mounted from your computer.
Troubleshooting
- Permission Denied (Linux): Did you run
sudo usermod -aG docker $USER? If not, you must usesudobefore every docker command. -
GUI Not Showing:
- Linux: Ensure you ran
xhost +local:dockerbefore starting the container. - Windows: Ensure you are running the command inside a WSL2 terminal and that your Windows version supports WSLg (Windows 10 Build 19044+ or Windows 11).
- Linux: Ensure you ran
-
Crashes: If segmentation crashes on large images, increase the shared memory by changing
--shm-size=8gbto--shm-size=16gb.