orbit.ext_template icon indicating copy to clipboard operation
orbit.ext_template copied to clipboard

Enhance Docker workflow with unified mount system and improved cluster operations

Open Idate96 opened this issue 10 months ago • 0 comments

Summary

This PR introduces a unified mount configuration system for Docker containers and enhances cluster deployment workflows, making it easier to develop with external IsaacLab/RSL-RL installations and deploy to HPC clusters.

Key Features

1. Unified Mount Configuration System

  • New mount-setup wizard for interactive configuration of external codebase mounts
  • Support for mounting external IsaacLab and RSL-RL installations into containers
  • Automatic generation of docker-compose.override.yaml from .mount.config
  • Commands: mount-enable, mount-disable, mount-set, mount-show

2. Enhanced Cluster Operations

  • Automatic mount synchronization: Local mount configurations are automatically applied on cluster
  • Two mount modes:
    • Sync mode: Automatically syncs local codebase to cluster
    • Mount-only mode: Uses existing codebase on cluster without syncing
  • Dynamic path expansion: Support for environment variables like $CLUSTER_USER in mount paths
  • Improved argument passing: Fixed script arguments being properly passed through SSH and job schedulers

3. Developer Experience Improvements

  • New run_dev.sh script for quick development container access
  • --rootless flag for environments without root Docker access
  • --fix-perms flag to automatically fix file ownership issues
  • Better error handling and debug output for troubleshooting

4. Documentation Updates

  • Comprehensive Docker setup guide with quick start section
  • Detailed cluster operations guide with mount configuration examples
  • Troubleshooting sections for common issues
  • Migration guide from previous container setups

Usage Examples

# Configure external mounts interactively
./docker/container.sh mount-setup

# Quick development access
./docker/run_dev.sh

# Run on university PC without root
./docker/run_dev.sh --rootless

# Deploy to cluster with external mounts
cd docker/cluster
./cluster_interface.sh push ext_template
./cluster_interface.sh job ext_template --task MyTask --num_envs 32000

Idate96 avatar Jun 03 '25 17:06 Idate96