A Go-based container and virtual machine management platform that provides utilities for running, managing, and orchestrating containerized applications and virtual machines with enhanced isolation and control.
- Create and Deploy: Spin up containers with custom configurations and isolated environments
- Lifecycle Management: Start, stop, restart, and monitor container states
- Custom Namespaces: Advanced namespace isolation for enhanced security and resource separation
- Resource Control: Manage CPU, memory, and storage allocations for containers
- VM Provisioning: Launch and control virtual machines with flexible configurations
- Shell Access: Interactive shell access to VMs for debugging and administration
- Resource Management: Dynamic allocation and monitoring of VM resources
- State Management: Save, restore, and migrate VM states
- Unified CLI: Single command-line interface for managing both containers and VMs
- Interactive Commands: Streamlined operations with intuitive command structure
- Real-time Monitoring: Live status updates and resource monitoring
- Batch Operations: Execute multiple operations efficiently
- Root Filesystem Control: Manage and customize root filesystems for containers and VMs
- Mount Point Management: Dynamic mounting and unmounting of storage volumes
- Overlay Networks: Support for complex filesystem overlays and unions
- Storage Backends: Multiple storage driver support for flexibility
- Namespace Runner: Execute processes in completely isolated namespaces
- Security Policies: Configurable security contexts and access controls
- Network Isolation: Separate network namespaces for enhanced security
- User Namespace Support: Run containers with unprivileged user mappings
- Colorful CLI Output: Enhanced terminal output with color-coded messages for better readability
- Extensible Architecture: Modular design allowing easy addition of plugins and extensions
- Rich Logging: Comprehensive logging with multiple verbosity levels
- Error Handling: Detailed error messages and recovery suggestions
- Go 1.19 or higher
- Linux operating system (for namespace support)
- Root privileges (for container/VM management)
# Clone the repository
git clone https://github.com/a-ZINC/conti.git
cd conti
# Build the project
make build
# Run the application
make run# Start a container
./conti container create --image ubuntu:latest --name my-container
# Launch a VM
./conti vm create --memory 2G --cpu 2 --name my-vm
# List running containers and VMs
./conti list
# Access container shell
./conti container shell my-container
# Access VM shell
./conti vm shell my-vmconti/
βββ host/ # Main application code
β βββ main.go # Host application entry point
β βββ client/ # Client interface logic
β βββ container/ # Container management modules
β βββ utils/ # Utility functions and helpers
β βββ vm/ # VM management and shell utilities
β βββ conti # Compiled binary
β βββ Makefile # Build and run commands
β βββ go.mod # Module dependencies
βββ runtime/ # Runtime execution environment
β βββ main.go # Runtime entry point
β βββ pkg/filesystem/ # Filesystem management
β βββ pkg/runner/ # Namespace and process runner
β βββ go.mod # Runtime dependencies
βββ README.md # This file
# Development build
make build
# Production build with optimizations
make build-prod
# Clean build artifacts
make clean
# Run tests
make test
# Install dependencies
go mod tidyNote: Conti is under active development. APIs and features may change between versions. Please check the CHANGELOG for breaking changes and updates.