Most secure CI/CD and Git container images, ranked by isolation score¶
How isolated are the most-pulled CI/CD and Git container images when you docker run them with plain defaults, no hardening flags? This page ranks 19 build runners, CI servers, and Git forges (Jenkins, GitLab, Gitea, Drone, Concourse) on IronClaw's seven-dimension container containment scale (0-100), best-isolated first. Scores run 48/100 to 63/100 (average 54/100). Higher is safer. Every score comes from ironctl scan, a credential-free audit you can run on your own containers in ten seconds.
No CI/CD and Git image ships fully isolated by default: the leaders still leave capabilities, egress, or a writable root filesystem open. Every one of those gaps has a
docker runflag that targets it, listed on every scorecard.
Ranked best to worst¶
| Rank | Image | Score | Grade | Top gaps (default config) |
|---|---|---|---|---|
| ๐ฅ 1 | ghcr.io/actions/actions-runner:2.321.0 |
63/100 | ๐ก C | Dropped capabilities, Network isolation / egress, Read-only root filesystem |
| ๐ฅ 2 | quay.io/argoproj/argocd:v2.13.2 |
63/100 | ๐ก C | Dropped capabilities, Network isolation / egress, Read-only root filesystem |
| ๐ฅ 3 | goharbor/harbor-core:v2.12.0 |
63/100 | ๐ก C | Dropped capabilities, Network isolation / egress, Read-only root filesystem |
| 4 | jenkins/jenkins:lts |
63/100 | ๐ก C | Dropped capabilities, Network isolation / egress, Read-only root filesystem |
| 5 | sonatype/nexus3:3.75.0 |
63/100 | ๐ก C | Dropped capabilities, Network isolation / egress, Read-only root filesystem |
| 6 | sonarqube:community |
63/100 | ๐ก C | Dropped capabilities, Network isolation / egress, Read-only root filesystem |
| 7 | jetbrains/teamcity-server:2024.12 |
63/100 | ๐ก C | Dropped capabilities, Network isolation / egress, Read-only root filesystem |
| 8 | gitea/act_runner:0.2.11 |
48/100 | ๐ D | Dropped capabilities, Non-root user (uid != 0), Network isolation / egress |
| 9 | concourse/concourse:7.12.0 |
48/100 | ๐ D | Dropped capabilities, Non-root user (uid != 0), Network isolation / egress |
| 10 | drone/drone:2 |
48/100 | ๐ D | Dropped capabilities, Non-root user (uid != 0), Network isolation / egress |
| 11 | codeberg.org/forgejo/forgejo:9 |
48/100 | ๐ D | Dropped capabilities, Non-root user (uid != 0), Network isolation / egress |
| 12 | gitea/gitea:1.22 |
48/100 | ๐ D | Dropped capabilities, Non-root user (uid != 0), Network isolation / egress |
| 13 | gitlab/gitlab-ce:17.7.0-ce.0 |
48/100 | ๐ D | Dropped capabilities, Non-root user (uid != 0), Network isolation / egress |
| 14 | gitlab/gitlab-runner:v17.7.0 |
48/100 | ๐ D | Dropped capabilities, Non-root user (uid != 0), Network isolation / egress |
| 15 | gogs/gogs:0.13 |
48/100 | ๐ D | Dropped capabilities, Non-root user (uid != 0), Network isolation / egress |
| 16 | hashicorp/packer:1.11.2 |
48/100 | ๐ D | Dropped capabilities, Non-root user (uid != 0), Network isolation / egress |
| 17 | pulumi/pulumi:3.144.1 |
48/100 | ๐ D | Dropped capabilities, Non-root user (uid != 0), Network isolation / egress |
| 18 | rancher/rancher:v2.10.1 |
48/100 | ๐ D | Dropped capabilities, Non-root user (uid != 0), Network isolation / egress |
| 19 | hashicorp/terraform:1.10 |
48/100 | ๐ D | Dropped capabilities, Non-root user (uid != 0), Network isolation / egress |
Scan your own CI/CD and Git container¶
These grades come from ironctl scan, one credential-free command that audits any running container, docker-compose service, or Kubernetes manifest, not just the CI/CD and Git images ranked above:
# install (Homebrew)
brew install ironsecco/ironclaw/ironclaw
# grade your own container the same way this page was generated
ironctl scan my-container
- All container isolation scores →, every scorecard, worst-isolated first.
- Browse every category →, the full set of ranked collection pages.
- Container Isolation Leaderboard →, the whole dataset ranked, with a Hall of Fame and worst offenders.
- Scan any container →, the full command reference.
- The State of Container Isolation, 2026 →, the survey these grades are built from.
Part of the Container Isolation Scores directory. Generated from a reproducible survey by examples/isolation-survey/gen_scorecards.py and refreshed weekly, so this ranking never goes stale. Grades reflect each image's default configuration, not a limit of the image itself: the docker run flags on each page target the gaps that grade found.