No description
  • Rust 96.1%
  • Makefile 3%
  • Shell 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jan Kaluza 42f6887057
Merge pull request #35 from jankaluza/test-fix
runtime/session: fix sync-pipe JSON key for create failures
2026-07-20 10:53:25 +02:00
.fmf tmt: Initial enablement 2026-07-20 06:56:07 +02:00
contrib/packit-tmt tmt: Initial enablement 2026-07-20 06:56:07 +02:00
docs Add man-page. 2026-03-17 11:40:48 +01:00
plans tmt: Initial enablement 2026-07-20 06:56:07 +02:00
rpm spec: Use the vendor all the time 2026-07-10 15:21:27 +02:00
src Merge pull request #35 from jankaluza/test-fix 2026-07-20 10:53:25 +02:00
test/tmt Run with RUST_BACKTRACE=1. 2026-07-20 09:58:42 +02:00
.gitignore meta: refresh Cargo metadata and ignore vendor tarballs 2026-05-28 14:15:58 +02:00
.packit-copr-rpm.sh spec: still use the -vendor tarball. 2026-07-10 12:49:04 +02:00
.packit.yaml packit: Add testing-farm jobs 2026-07-20 07:08:35 +02:00
build.rs Add the build.rs to set the GIT_COMMIT variable 2025-10-02 14:38:53 +02:00
Cargo.lock meta: refresh Cargo metadata and ignore vendor tarballs 2026-05-28 14:15:58 +02:00
Cargo.toml meta: refresh Cargo metadata and ignore vendor tarballs 2026-05-28 14:15:58 +02:00
CODE-OF-CONDUCT.md Initial project setup 2025-09-29 13:33:25 +02:00
LICENSE Initial project setup 2025-09-29 13:33:25 +02:00
Makefile Makefile: Add .install.fmt target 2026-07-20 06:56:07 +02:00
README.md Fix the grammar issues in README.md. 2026-07-10 13:01:43 +02:00
SECURITY.md Initial project setup 2025-09-29 13:33:25 +02:00

conmon-v3

An OCI container runtime monitor.

Conmon is a monitoring program and communication tool between a container manager (like Podman or CRI-O) and an OCI runtime (like runc or crun) for a single container.

Upon being launched, conmon (usually) double-forks to daemonize and detach from the parent that launched it. It then launches the runtime as its child. This allows the managing process to exit in the foreground while still being able to watch over and connect to the child process (the container).

While the container runs, conmon does two things:

  • Provides a socket for attaching to the container, holding open the container's standard streams and forwarding them over the socket.
  • Writes the contents of the container's streams to a log file (or to the systemd journal) so they can be read after the container's death.

Finally, upon the container's death, conmon will record its exit time and code to be read by the managing programs.

Written in Rust and designed to have a low memory footprint, conmon is intended to be run by a container management library. Essentially, conmon is the smallest daemon a container can have.

In most cases, conmon should be packaged with your favorite container manager. However, if you'd like to try building it from source, follow the steps below.

Run Podman with conmon-v3

To test conmon-v3 on Fedora, CentOS, or RHEL, do the following:

$ sudo dnf copr enable rhcontainerbot/podman-next
$ sudo dnf install conmon-v3
$ sudo dnf copr disable rhcontainerbot/podman-next

It is important to disable the COPR repository after installation; otherwise, any future dnf update will install the latest unreleased versions of Podman and other tools.

To update conmon-v3 to the latest version, run:

$ sudo dnf --enablerepo=copr:copr.fedorainfracloud.org:rhcontainerbot:podman-next update conmon-v3

To switch Podman to conmon-v3, edit /usr/share/containers/containers.conf and change the conmon_path option as follows:

conmon_path = [
  "/usr/bin/conmon-v3"
]

To verify that Podman is using conmon-v3, run podman info as follows:

$ podman info|grep conmon
  conmon:
    package: conmon-v3-3.0.0-1.20260324101217195131.main.fc43.x86_64
    path: /usr/bin/conmon-v3
    version: 'conmon version 3.0.0-dev, commit: <commit_hash>'

Dependencies

These dependencies are required for the build:

sudo yum install -y \
  rust \
  make \
  cargo
sudo apt-get install \
  rust \
  make \
  cargo

Build

Once all the dependencies are installed:

make

There is one option for installation, depending on your environment. Each can have the PREFIX overridden. The PREFIX defaults to /usr/local for most Linux distributions.

  • make install installs to $PREFIX/bin, adding conmon to your PATH.

Note: to run conmon, you'll also need to have an OCI-compliant runtime installed, like runc or crun.