barco is a project I worked on to learn more about Linux containers and the Linux kernel, based on other guides on the internet.

Looks like a good project to learn container from scratch.

Just wondering the main reason you're C since most of the container project now seems to be using Go or Rust?

I came across this last week when reading about different container runtimes -- crun is implemented in C[0].

Their explanation:

  "While most of the tools used in the Linux containers ecosystem are written in Go, I believe C is a better fit for a lower level tool like a container runtime. runc, the most used implementation of the OCI runtime specs written in Go, re-execs itself and use a module written in C for setting up the environment before the container process starts.

  crun aims to be also usable as a library that can be easily included in programs without requiring an external process for managing OCI containers."

[0]https://github.com/containers/crun