Skip to content

Enhance Docker workflow with unified mount system and improved cluster operations #56

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: main
Choose a base branch
from

Conversation

Idate96
Copy link

@Idate96 Idate96 commented Jun 3, 2025

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 and others added 9 commits May 29, 2025 19:10
…eworks_ext

- Replace simple Docker setup with comprehensive 2-container architecture
- Add production container (ext) for cluster deployment
- Add development container (ext-dev) with ROS2 and dual-mode support
- Implement unified mount system for optional IsaacLab/RSL-RL mounts
- Add cluster workflow scripts for SLURM/PBS job submission
- Include mount configuration system with validation
- Add container management script (container.sh) for easier usage
- Support both root and rootless Docker operation modes
- Add comprehensive documentation (MOUNT_SYSTEM_GUIDE.md, DOCKER_ARCHITECTURE.md)
- Update .gitignore to exclude user-specific configuration files

This brings the IsaacLabExtensionTemplate up to par with the advanced
Docker and cluster capabilities developed in moleworks_ext.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Merged DOCKER_ARCHITECTURE.md and MOUNT_SYSTEM_GUIDE.md into docker/README.md
- Created docker/cluster/README.md for cluster-specific operations
- Added missing sync_experiments.sh script from moleworks_ext
- Follows moleworks_ext documentation structure
- Remove extends directive from isaac-lab-ext-dev-rootless service
- Add full service definition with privileged: false for rootless mode
- Include all necessary service properties (network_mode, ipc, deploy, etc.)
- This ensures proper permissions without requiring privileged access
- Update Python aliases to use isaaclab.sh -p wrapper for proper environment setup
- Enhance container UX with 🐳 DOCKER prompt and welcome banner
- Fix bashrc sourcing to ensure proper shell environment loading
- Support Docker prompt indicator when home directory is mounted
- Add explicit entrypoint declarations in docker-compose services
- Use dynamic_entrypoint.sh for development containers
- Remove figlet dependency that was causing startup errors
- Ensure proper Docker visual indicators are displayed
- Correct entrypoint path from /dynamic_entrypoint.sh to /entrypoint.sh
- Ensure containers start properly with Docker visual indicators
- Fix cluster user variable expansion in mount paths
- Fix script argument passing through SSH and job submission
- Add proper error handling for mount configuration parsing
- Add debug output for troubleshooting cluster jobs
- Add NVIDIA Container Toolkit prerequisite with installation link
- Clarify timestamped directory creation for cluster jobs
- Fix job output location references for SLURM/PBS
- Add troubleshooting for mount path variable expansion
- Add Docker/Apptainer version compatibility information
- Improve GPU troubleshooting with toolkit verification step
- Remove automatic RSL-RL installation from both production and dev containers
- Remove RTX sensor symlink creation (no longer needed)
- Update documentation to reflect RSL-RL is not included by default
- Remove migration guide section from Docker README
@pascal-roth pascal-roth requested a review from Mayankm96 June 12, 2025 07:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant