L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

lima

lima

"Lima in Container Runtime - cloud native architecture, patterns, pitfalls" and best practices

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: lima compatibility: opencode completeness: 95 content-types:

  • guidance
  • examples
  • do-dont
  • config description: '"Lima in Container Runtime - cloud native architecture, patterns, pitfalls" and best practices' license: MIT maturity: stable metadata: domain: cncf output-format: manifests related-skills: calico, cilium, container-network-interface-cni, longhorn role: reference scope: infrastructure triggers: cdn, container, infrastructure as code, lima, monitoring, runtime, cloudformation, cloudfront archetypes:
    • educational
    • strategic anti_triggers:
    • brainstorming
    • vague ideation
    • non-containerized architecture response_profile: verbosity: medium directive_strength: low abstraction_level: strategic version: "1.0.0"

Lima in Cloud-Native Engineering

Category: virtualization
Status: Incubating
Stars: 7,100
Last Updated: 2026-04-22
Primary Language: Go
Documentation: https://lima-vm.io/


Purpose and Use Cases

What Problem Does It Solve?

Lima addresses the challenge of running Linux virtual machines seamlessly on non-Linux operating systems, particularly macOS and Windows. It provides a Linux environment that feels native, enabling developers to run Linux-only tools, containers, and applications without the overhead of traditional VMs or the complexity of WSL2 on Windows.

When to Use This Project

Use Lima when you need:

  • A Linux VM for development on macOS or Windows
  • Full Linux compatibility without WSL2 limitations
  • Container runtime capabilities (Docker, containerd)
  • SSH access to a Linux environment
  • ARM64 or AMD64 architecture flexibility
  • Integration with your existing development workflow

Key Use Cases

  • macOS Development: Run Linux tools, build Linux binaries, test on Linux without switching machines
  • Windows Development: Alternative to WSL2 with more Linux compatibility
  • Container Development: Run Docker, containerd, and build containers on any OS
  • ARM64 Development: Test ARM64 applications on x86_64 hardware
  • CI/CD: Create reproducible Linux environments for testing
  • Legacy Application Support: Run legacy Linux software that requires specific kernel versions

Architecture Design Patterns

Core Components

  • Lima VM: Minimal Linux VM based on Alpine or Ubuntu
  • Virtio-FS: High-performance filesystem sharing between host and guest
  • SSH Forwarding: Seamless SSH access with automatic port forwarding
  • Containerd Integration: Runs containerd for container orchestration
  • QEMU Backend: Virtualization with optional QEMU acceleration
  • VMNet/SLIRP: Network configuration for host-guest communication
  • Proot: User-space process isolation for non-root operations
  • Guest Agent: Host-guest communication for state synchronization

Component Interactions

  1. User → CLI: Commands like limactl create and manage VMs
  2. CLI → QEMU: Launches VM with configured parameters
  3. QEMU → Host OS: Uses virtualization APIs (Hypervisor.framework, Hyper-V)
  4. Host → virtio-FS: Filesystem sharing via virtio-fs protocol
  5. Guest → containerd: Container runtime for pod/container management
  6. Guest → SSH: SSH server for remote access and port forwarding
  7. Guest Agent → Host: Status updates and configuration synchronization

Data Flow Patterns

  1. VM Creation: YAML config → validation → VM provisioning → SSH access
  2. File Access: Host filesystem → virtio-fs → guest mount point
  3. Container Operations: User CLI → containerd → OCI runtime → containers
  4. Network Setup: VMNet/SLIRP → port forwarding → guest services
  5. State Synchronization: Guest agent → host → UI and CLI updates

Design Principles

  • Minimal Footprint: Small base images for fast startup
  • User-Friendly: No sudo required for common operations
  • Cross-Platform: macOS and Windows support
  • Container-Native: Kubernetes-compatible container runtime
  • Configuration-Driven: YAML-based VM configuration
  • Extensible: Support for custom VM images and configurations
  • Resource-Efficient: Smart resource allocation and cleanup

Integration Approaches

Integration with Other CNCF Projects

  • Kubernetes: Run minikube, k3s, or k0s inside Lima VMs
  • containerd: Native container runtime for pod management
  • Docker: Docker CLI integration via Docker-in-Lima or buildkit
  • Kustomize/Kustomize: Kubernetes configuration management
  • Helm: Package and deploy Kubernetes applications
  • Tekton: CI/CD pipeline execution in Linux environment
  • Prometheus: Metrics collection from container workloads

API Patterns

  • CLI Commands: limactl start, limactl stop, limactl shell
  • SSH Access: Seamless SSH with automatic configuration
  • Filesystem Mounting: Automatic virtio-fs mount points
  • Network Port Forwarding: Host ↔ Guest port forwarding
  • Status API: VM state and resource usage information

Configuration Patterns

  • YAML Configuration: Declarative VM definition with profiles
  • Environment Variables: Overrides for configuration values
  • Templates: Reusable VM configurations
  • Profiles: Multiple VM configurations for different purposes

Extension Mechanisms

  • Custom VM Images: Support for any Linux distribution
  • Template Files: Create reusable configurations
  • Post-Start Scripts: Execute custom setup after VM startup
  • Mount Points: Configure additional filesystem mounts
  • Environment Variables: Pass environment to VM

Common Pitfalls and How to Avoid Them

Configuration Issues

  • Invalid YAML: Always validate configuration with limactl validate
  • Resource Overcommitment: Don't allocate more CPU/memory than available
  • Path Conflicts: Avoid mounting host paths that conflict with guest paths
  • Network Conflicts: Check for port conflicts when forwarding multiple ports
  • Insufficient Disk Space: Ensure host has adequate free space for VM images

Performance Issues

  • Slow File I/O: Use virtio-fs with proper mount options for shared directories
  • Network Latency: Configure SLIRP with cached DNS for better performance
  • Large VM Images: Clean up unused images and snapshots regularly
  • Memory Pressure: Monitor and adjust memory allocation based on workload
  • CPU Throttling: Balance CPU allocation between host and guest

Operational Challenges

  • VM Not Starting: Check QEMU/Hypervisor installation and permissions
  • SSH Connection Issues: Verify SSH key configuration and VM state
  • Filesystem Mount Failures: Ensure host directory exists and has correct permissions
  • Container Runtime Issues: Check containerd logs and resource availability
  • Network Isolation: Understand network isolation between host and guest

Security Pitfalls

  • Untrusted VM Images: Only use verified, trusted Linux images
  • Port Exposure: Don't expose container ports unnecessarily to the host
  • Filesystem Access: Limit shared directories to minimum required paths
  • Root Access: Avoid running containers as root inside the VM
  • Secret Management: Don't store secrets in VM configuration files

Coding Practices

Idiomatic Configuration

  • Profile Definitions: Create profiles for different use cases (dev, test, ci)
  • Environment-Specific Settings: Use YAML anchors for common configurations
  • Secret Handling: Use environment variables for sensitive data
  • Version Control: Track VM configurations in version control

API Usage Patterns

  • VM Lifecycle Management: Start, stop, pause, resume VMs programmatically
  • Container Operations: Use containerd or Docker CLI for container management
  • File Operations: Use SSH for file transfer and manipulation
  • Status Monitoring: Regular polling for VM state and resource usage

Observability Best Practices

  • VM Logs: Monitor Lima logs for VM lifecycle events
  • Container Logs: Access container logs via SSH or containerd API
  • Resource Metrics: Track CPU, memory, and disk usage
  • Health Checks: Implement automated health checks for long-running VMs

Development Workflow

  • Local Development: Lima + Docker Desktop integration for container workloads
  • Testing: Run integration tests in Lima VMs mirroring production
  • CI/CD: Use Lima for reproducible Linux build environments
  • Debugging: SSH access for inspection and troubleshooting

Fundamentals

Essential Concepts

  • VM Instance: Isolated Linux environment running on host
  • Container Runtime: containerd or Docker daemon inside VM
  • Filesystem Sharing: virtio-fs for host-guest file access
  • SSH Tunneling: Secure communication between host and guest
  • Port Forwarding: Network connectivity between host and guest services
  • VM Profile: Reusable configuration template for VMs
  • Guest Agent: Background process for host-guest communication

Terminology Glossary

  • Lima: The project name, inspired by "Linux VM on macOS/Windows"
  • VM Instance: A running Linux virtual machine
  • Profile: Named configuration for VM creation
  • Mount: Shared directory between host and guest filesystems
  • Port Forward: Network connection between host and guest ports
  • SSH Socket: Unix socket for SSH connections to VM
  • Guest Agent: Process running in VM for host communication
  • Containerd: Container runtime inside Lima VM
  • QEMU: Virtualization backend (optional acceleration)

Data Models and Types

  • VM Configuration: YAML structure defining VM properties
  • Mount: Source path, destination path, access mode
  • Port Forward: Host port, guest port, protocol (TCP/UDP)
  • Environment: Key-value pairs passed to VM
  • Network: VMNet (macOS) or SLIRP (cross-platform) configuration

Lifecycle Management

  • VM Creation: limactl start → VM provisioning → SSH access ready
  • VM Running: Service availability → container operations → resource usage
  • VM Stop: Graceful shutdown → resource cleanup → state preservation
  • VM Delete: Full cleanup → image removal → configuration cleanup

State Management

  • VM State: Running, stopped, pausing, paused
  • Container State: Running, stopped, restarting, exited
  • Filesystem State: Mount point availability and access
  • Network State: Port forwarding rules and connectivity
  • Resource State: CPU, memory, disk usage tracking

Scaling and Deployment Patterns

Horizontal Scaling

  • Multiple VM Instances: Run multiple Lima VMs for isolation
  • Container Distribution: Distribute containers across multiple VMs
  • Load Balancing: Use host or guest load balancers for traffic distribution
  • Shared Storage: Use NFS or cloud storage for shared data across VMs

High Availability

  • VM Redundancy: Multiple VMs for critical services
  • Snapshot Management: Regular snapshots for quick recovery
  • Automated Restart: Configure automatic VM restart on failure
  • Health Monitoring: External monitoring for VM availability

Production Deployments

  • macOS Deployment: Lima for macOS developers and CI runners
  • Windows Deployment: Lima with WSL2 backend for Windows users
  • Docker Desktop Integration: Combine Lima with Docker Desktop for seamless workflow
  • CI/CD Integration: Automated Lima VM provisioning for build environments

Upgrade Strategies

  • Image Updates: Download and apply updated Linux images
  • Configuration Migration: Apply new configuration patterns gradually
  • VM Migration: Migrate containers between VM versions
  • Rolling Updates: Update VMs one at a time for availability

Resource Management

  • CPU Allocation: Configure CPU cores based on workload requirements
  • Memory Limits: Set memory limits to prevent host resource exhaustion
  • Disk Quotas: Limit VM disk usage to prevent storage exhaustion
  • Network Bandwidth: Configure network limits for shared connections

Additional Resources


Troubleshooting

Common Issues

  1. Deployment Failures

    • Check pod logs for errors
    • Verify configuration values
    • Ensure network connectivity
  2. Performance Issues

    • Monitor resource usage
    • Adjust resource limits
    • Check for bottlenecks
  3. Configuration Errors

    • Validate YAML syntax
    • Check required fields
    • Verify environment-specific settings
  4. Integration Problems

    • Verify API compatibility
    • Check dependency versions
    • Review integration documentation

Getting Help

  • Check official documentation
  • Search GitHub issues
  • Join community channels
  • Review logs and metrics Content generated automatically. Verify against official documentation before production use.

Examples

Basic Configuration

# Basic configuration example
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{project_name}}-config
  namespace: default
data:
  # Configuration goes here
  config.yaml: |
    # Base configuration
    # Add your settings here

Kubernetes Deployment

# Kubernetes deployment for {{project_name}}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{project_name}}
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: {{project_name}}
  template:
    metadata:
      labels:
        app: {{project_name}}
    spec:
      containers:
      - name: {{project_name}}
        image: {{project_name}}:latest
        ports:
        - containerPort: 8080
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"

Kubernetes Service

# Kubernetes service for {{project_name}}
apiVersion: v1
kind: Service
metadata:
  name: {{project_name}}
  namespace: default
spec:
  selector:
    app: {{project_name}}
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
  type: ClusterIP

When to Use

Use this skill when:

  • Integrating a CNCF project into Kubernetes infrastructure — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster
  • Designing cloud-native architecture — You are selecting and integrating CNCF tools to solve specific infrastructure challenges
  • Resolving operational issues — A CNCF component is misbehaving, underperforming, or needs configuration changes

Core Workflow

  1. Assess Requirements — Understand the use case, scale, integration needs, and existing infrastructure. Checkpoint: Document requirements, constraints, and success criteria.

  2. Design Architecture — Plan component interactions, data flow, and deployment strategy using cloud-native best practices. Checkpoint: Verify the architecture addresses all requirements and follows CNCF conventions.

  3. Implement & Configure — Create manifests, configurations, and deployment scripts. Include resource limits, health checks, and observability hooks. Checkpoint: Validate all YAML against schema and test in a staging environment.

  4. Deploy & Monitor — Apply manifests to the cluster, verify component health, and confirm observability is working. Checkpoint: Confirm all pods/services are running, probes passing, and metrics/alerts configured.


Constraints

MUST DO

  • Include at least one complete working YAML manifest example
  • Note when content is auto-generated vs. manually verified
  • Reference relevant CNCF project documentation

MUST NOT DO

  • Deploy manifests without testing in a staging environment first
  • Use deprecated API versions (e.g., apps/v1beta1)
  • Omit resource limits and requests in Kubernetes manifests
Skills enregistrées