explaingit

cri-o/cri-o

5,611GoAudience · ops devopsComplexity · 4/5Setup · hard

TLDR

CRI-O is the connector between Kubernetes and the software that actually runs containers on a server, handling image pulling, storage, and container lifecycle without requiring Docker.

Mindmap

mindmap
  root((repo))
    What it does
      Connect Kubernetes
      Pull images
      Run containers
      Manage storage
    Standards
      CRI interface
      OCI runtime
      Kubernetes versions
    Platforms
      Red Hat OpenShift
      Ubuntu Debian
      deb and rpm
    Use cases
      K8s runtime swap
      Production clusters
      Lightweight setup
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Replace Docker as the container runtime in a Kubernetes cluster for a lighter setup that only handles what Kubernetes needs.

USE CASE 2

Configure CRI-O as the runtime for a Red Hat OpenShift cluster on Linux.

USE CASE 3

Debug container startup problems using CRI-O's logging and monitoring output in a production environment.

USE CASE 4

Install CRI-O via deb or rpm packages on common Linux distributions and connect it to a running Kubernetes node.

Tech stack

GoLinuxOCI

Getting it running

Difficulty · hard Time to first run · 1day+

Each major CRI-O version must exactly match your Kubernetes version, setting up a full node to test requires a working Kubernetes environment.

In plain English

CRI-O is a piece of infrastructure software that sits between Kubernetes and the containers it runs. Kubernetes is a system used to manage large numbers of application containers across many servers. To actually start and stop containers, Kubernetes needs to talk to a container runtime, which is the software that does the low-level work of launching isolated processes. CRI-O is one such runtime connector. More specifically, CRI-O implements something called the Container Runtime Interface (CRI), which is the standard Kubernetes uses to communicate with whatever is actually running containers on a given machine. CRI-O translates those instructions into calls to OCI-compliant runtimes, where OCI stands for Open Container Initiative, a set of industry standards for how containers should be defined and run. In practice, CRI-O typically delegates the actual container execution to a tool like runc, which does the final work of starting the isolated process. CRI-O handles a defined set of responsibilities: pulling and managing container images (which can be in Docker or other OCI-compatible formats), managing how image layers are stored on disk, starting and stopping container processes, and providing the monitoring and logging that Kubernetes expects. Building or pushing images is explicitly out of scope for this project. CRI-O follows the Kubernetes release schedule, with each major version of CRI-O corresponding to a matching Kubernetes version. It is an active project under the Kubernetes community and is governed by the sig-node working group. It has a weekly meeting and a public roadmap tracked in a GitHub project. The project is used in production environments, including Red Hat's OpenShift platform. Installation packages are available in deb and rpm formats for common Linux distributions. The README includes a compatibility matrix, configuration reference, debugging tips, and a list of known adopters.

Copy-paste prompts

Prompt 1
Show me how to install CRI-O on Ubuntu 24.04 to use as the container runtime for a Kubernetes cluster and configure kubelet to use it.
Prompt 2
Help me configure CRI-O to delegate container execution to a custom OCI runtime instead of the default runc.
Prompt 3
I need to debug a container that won't start in my Kubernetes cluster using CRI-O, what logs should I check and how do I interpret the errors?
Prompt 4
Walk me through verifying that a specific version of CRI-O matches my Kubernetes version before installing it on a new cluster node.
Open on GitHub → Explain another repo

← cri-o on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.