|
| 1 | +--- |
| 2 | +contentTags: |
| 3 | + platform: |
| 4 | + - Cloud |
| 5 | + - Server v4+ |
| 6 | +--- |
| 7 | += Self-hosted runner feature comparison |
| 8 | +:description: A comparison table of the features available for CircleCI runners. |
| 9 | +:page-layout: classic-docs |
| 10 | +:page-liquid: |
| 11 | +:icons: font |
| 12 | +:experimental: |
| 13 | + |
| 14 | +This page offers a comparison of the features available for CircleCI machine runner vs. CircleCI container runner. |
| 15 | + |
| 16 | +[#feature-comparison-matrix] |
| 17 | +== Comparison matrix |
| 18 | + |
| 19 | +[.table.table-striped] |
| 20 | +[cols=4*, options="header", stripes=even] |
| 21 | +|=== |
| 22 | +|Feature |
| 23 | +|Description |
| 24 | +|Machine Runner |
| 25 | +|Container Runner |
| 26 | + |
| 27 | +|*Environment* |
| 28 | +|Where jobs run and how resources are managed |
| 29 | +|Full VM/bare metal |
| 30 | +|Kubernetes Pods |
| 31 | + |
| 32 | +|*Configuration File* |
| 33 | +|Primary file for runner setup |
| 34 | +|YAML config (location depends on OS) |
| 35 | +|Helm `values.yaml` |
| 36 | + |
| 37 | +|*Resource Control* |
| 38 | +|How compute resources are allocated |
| 39 | +|System level |
| 40 | +|Kubernetes limits |
| 41 | + |
| 42 | +|*Architecture Support* |
| 43 | +|CPU architectures available for builds |
| 44 | +|xref:runner-overview#available-self-hosted-runner-platforms[Depends on OS] |
| 45 | +|AMD64/ARM64 with `nodeSelector` |
| 46 | + |
| 47 | +|*Job Isolation* |
| 48 | +|How jobs are kept separate |
| 49 | +|VM-level |
| 50 | +|Container-level |
| 51 | + |
| 52 | +|*Scaling* |
| 53 | +|How runner capacity scales with demand |
| 54 | +|xref:runner-scaling#scaling-data[Manual/custom] |
| 55 | +|Kubernetes-based auto-scaling |
| 56 | + |
| 57 | +|*Service Containers* |
| 58 | +|Support for additional services in build |
| 59 | +|Not supported |
| 60 | +|Extensive support with resource controls |
| 61 | + |
| 62 | +|*Execution Modes* |
| 63 | +|How runner handles job execution |
| 64 | +|`single-task` or `continuous` |
| 65 | +|Pod-based execution |
| 66 | + |
| 67 | +|*Docker Support* |
| 68 | +|How Docker-in-Docker is handled |
| 69 | +|Native OS support |
| 70 | +|Possible xref:container-runner#building-container-images[with third-party tools] |
| 71 | + |
| 72 | +|*Resource Cleanup* |
| 73 | +|How build environments are cleaned after jobs |
| 74 | +|Working directory cleanup |
| 75 | +|Container lifecycle |
| 76 | +|=== |
| 77 | + |
| 78 | + |
| 79 | +[#feature-highlights] |
| 80 | +== Feature Highlights |
| 81 | + |
| 82 | +*Machine Runner* |
| 83 | + |
| 84 | +* Latest generation of machine-based runners. |
| 85 | +* Full access to underlying operating system. |
| 86 | +* Ideal for workflows requiring VM-level isolation. |
| 87 | +* Consistent xref:variables#built-in-environment-variables[environment variables] with `CIRCLECI_RUNNER_*` prefix. |
| 88 | +* Supports SSH connectivity for debugging. |
| 89 | + |
| 90 | +*Container Runner* |
| 91 | + |
| 92 | +* Kubernetes-native solution for container-based workflows. |
| 93 | +* Fine-grained resource allocation and constraints. |
| 94 | +* Supports service container configurations with pattern matching. |
| 95 | +* Advanced node selection via Kubernetes annotations. |
| 96 | +* Custom security contexts and volume mounting. |
| 97 | +* Support for spot instances via tolerations. |
| 98 | +* Configurable resource limits for primary and service containers. |
| 99 | +* Supports SSH connectivity for debugging - xref:container-runner-installation#enable-rerun-job-with-ssh[Open preview]. |
| 100 | + |
| 101 | +[#key-differences] |
| 102 | +== Key differences |
| 103 | + |
| 104 | +*Machine runner* offers full VM isolation with the newest |
| 105 | +configuration patterns and improved controls. |
| 106 | + |
| 107 | +*Container runner* leverages Kubernetes for: |
| 108 | + |
| 109 | +* Container-based isolation. |
| 110 | +* Better scaling capabilities. |
| 111 | +* Advanced resource management. |
| 112 | +* Multiple architecture support. |
| 113 | + |
| 114 | +[#choose-a-runner] |
| 115 | +== When to choose each runner |
| 116 | + |
| 117 | +*Machine runner*: Choose for full system access, custom system dependencies, or when Kubernetes is not available. |
| 118 | + |
| 119 | +*Container runner*: Best for cloud-native applications, teams using Kubernetes, and workloads that benefit from container orchestration. |
0 commit comments