UI はローカライズ済みです。スキルの紹介と説明文書は選択した言語へ AI が自動翻訳し、コード・コマンド・パス・専門用語は原文のままです。原作者の文書が優先されます。
スキルを探す
生産性・共同作業 · SKILL.md

lima

lima

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

Independent GitHub snapshot · Automated classification · Original documentation governs

スキルの説明

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
保存したスキル