HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
opencontainers
runc
Go2015–2026
opencontainers / runc

runc

CLI tool for spawning and running containers according to the OCI specification

42Distinct people
57Mentions
0Explicit recommenders
13.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

CLI tool for spawning and running containers according to the OCI specification

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 4:01:40 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year57 dated mentions

Observed mentions: 2015-06-22 18:01:36 UTC to 2026-10-23 10:01:24 UTC.

02468102015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 9 mentions; 0 submissions, 9 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 5 mentions; 2 submissions, 3 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 7 mentions; 2 submissions, 5 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC909
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC707
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC615
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC303
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC404
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC303
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC606
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC303
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC523
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC725
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC404

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
runc Introduction runc is a CLI tool for spawning and running containers on Linux according to the OCI specification. Releases You can find official releases of runc on the release page. All releases are signed by one of the keys listed in the runc.keyring file in the root of this repository. Security The reporting process and disclosure communications are outlined here. Security Audit A third party security audit was performed by Cure53, you can see the full report here. Building runc only supports Linux. See the header of go.mod for the minimally required Go version. Pre-Requisites Utilities and Libraries In addition to Go, building runc requires multiple utilities and libraries to be installed on your system. On Ubuntu/Debian, you can install the required dependencies with: apt update && apt install -y make gcc linux-libc-dev libseccomp-dev pkg-config git On CentOS/Fedora, you can install the required dependencies with: yum install -y make gcc kernel-headers libseccomp-devel pkg-config git On Alpine Linux, you can install the required dependencies with: apk --update add bash make gcc libseccomp-dev musl-dev linux-headers git The following dependencies are optional: libseccomp - only required if you enable seccomp support; to disable, see Build Tags. libpathrs - only required if you enable libpathrs support; to disable, see Build Tags. For notes on installing libpathrs, see the next section. libpathrs libpathrs is a Rust library runc can optionally use for path safety. As mentioned in the build tag section, its use is controlled with the libpathrs build tag. runc currently requires at least libpathrs 0.2.5 in order to function properly. At time of writing, very few distributions have libpathrs packages and so it is usually necessary to build and install it locally. For detailed installation instructions, see the upstream documentation, but for development builds the following instructions should be sufficient: libpathrs requires Rust 1.63+ (which is available on almost any distribution, including Debian oldstable and enterprise distributions like RHEL or SLES). Assuming you already have cargo installed (as well as other libpathrs dependencies like clang and lld), the following steps are all that are really necessary to install libpathrs: LIBPATHRS_VERSION=0.2.5 curl -o - -sSL https://github.com/cyphar/libpathrs/releases/download/v${LIBPATHRS_VERSION}/libpathrs-${LIBPATHRS_VERSION}.tar.xz | tar xvfJ - cd libpathrs-${LIBPATHRS_VERSION}/ make release sudo ./install.sh --prefix=/usr/local sudo ldconfig As part of our CI, we make use of a custom installation script for libpathrs which may be useful as a reference for folks with more complicated needs. With script/build-libpathrs.sh the installation of libpathrs becomes as simple as: sudo ./script/build-libpathrs.sh "$LIBPATHRS_VERSION" /usr/local sudo ldconfig However, please note that this installation script is completely unsupported and is not really intended for general use (it includes some workarounds for issues in our CI which will no longer be necessary once libpathrs has distribution packages we can use). Build # create a 'github.com/opencontainers' in your GOPATH/src cd github.com/opencontainers git clone https://github.com/opencontainers/runc cd runc make sudo make install You can also use go get to install to your GOPATH, assuming that you have a github.com parent folder already created under src: go get github.com/opencontainers/runc cd $GOPATH/src/github.com/opencontainers/runc make sudo make install runc will be installed to /usr/local/sbin/runc on your system. Version string customization You can see the runc version by running runc --version. You can append a custom string to the version using the EXTRA_VERSION make variable when building, e.g.: make EXTRA_VERSION="+build-1" Bear in mind to include some separator for readability. Build Tags runc supports optional build tags for compiling support of various features, with some of them enabled by default in the top-level Makefile. The following build tags are currently recognized: Build Tag Feature Set by Default Dependencies seccomp Syscall filtering using libseccomp. yes libseccomp libpathrs Use libpathrs for path safety. yes libpathrs runc_nocriu Disables runc checkpoint/restore. no criu To add or remove build tags from the default set, use the RUNC_BUILDTAGS make or shell variable. Tags prefixed with - are removed from the default set; others are added. For example: # Add runc_nocriu and remove seccomp tag. make RUNC_BUILDTAGS="runc_nocriu -seccomp" The following build tags were used earlier, but are now obsoleted: runc_nodmz (since runc v1.2.1 runc dmz binary is dropped) nokmem (since runc v1.0.0-rc94 kernel memory settings are ignored) apparmor (since runc v1.0.0-rc93 the feature is always enabled) selinux (since runc v1.0.0-rc93 the feature is always enabled) Running the test suite runc currently supports running its test suite via Docker. To run the suite just type make test. make test There are additional make targets for running the tests outside of a container but this is not recommended as the tests are written with the expectation that they can write and remove anywhere. You can run a specific test case by setting the TESTFLAGS variable. # make test TESTFLAGS="-run=SomeTestFunction" You can run a specific integration test by setting the TESTPATH variable. # make test TESTPATH="/checkpoint.bats" You can run a specific rootless integration test by setting the ROOTLESS_TESTPATH variable. # make test ROOTLESS_TESTPATH="/checkpoint.bats" You can run a test using your container engine's flags by setting CONTAINER_ENGINE_BUILD_FLAGS and CONTAINER_ENGINE_RUN_FLAGS variables. # make test CONTAINER_ENGINE_BUILD_FLAGS="--build-arg http_proxy=http://yourproxy/" CONTAINER_ENGINE_RUN_FLAGS="-e http_proxy=http://yourproxy/" Go Dependencies Management runc uses Go Modules for dependencies management. Please refer to Go Modules for how to add or update new
Read the full README on GitHub

What Hacker News says

9 sources
You are right, they are not mutually exclusive, and we are working on both in parallel. We are working on specifying a standardized way to 1) hash a container in its runnable form, and 2) attach arbitrary signatures constructed from that hash. That will allow using your favorite existing tools (eg. gpg) to create arbitrary trust and verification systems. This is part of the OCP project, and will be implemented by RunC which we donated last month. See https://github.com/opencontainers/runc and https://github.com/opencontainers/specs . As a rule of thumb, end-to-end trust and naming is most useful to developers ("How do I know I'm building on the right dependency, and using the latest and most secure version?"), and low-level hashing is most useful to ops ("How do I enforce a whitelist of containers allowed on my production cluster based on
Read the rest
home-made PKI and policies?") Another distinction is that you can use Notary (and Docker Trusted Content) with any kind of content - for example Compose files, source artifacts, system packages used to build the container, etc.
In Introducing Docker Content Trust
Just to clarify: user namespaces will be a great additional layer in security, but they are still a relatively new feature, with very little actual use in production. You can already use them in runC [1] (Docker's low-level container runtime which we have broken out as a standalone tool). And once we have sorted out the hairy side-effects on UID mapping and network namespaces, we will integrate it into the Docker engine itself. But even then, we won't recommend running untrusted code as root inside a Linux container until the community has more time to battle-test user namespaces. [1] https://github.com/opencontainers/runc
In Docker 1.8 released

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.