Building a container runtime from scratch in Go
This series covers building a complete OCI Runtime Spec compliant container runtime from scratch in Go, part by part.
Building a container runtime from scratch in Go
This series of posts is the culmination of the last few months of exploration I’ve been doing to build a container runtime from scratch.
Building the CLI interface for a container runtime in Go
In the first part of the series we learn about the operations defined by the OCI Runtime Spec and implement the command-line interface to handle them.
Reading a bundle config and saving a container's state
In the second part of the series we dig a bit deeper into the OCI Runtime spec and read in the config from the bundle and save out the container state.
Loading a container, getting it's state, and deleting it
In the third part of the series we implement the loading of a previously created container, retrieval of its current state and finally, deleting it.
Initialising a container and starting the user process
In the fourth part of the series we learn about fork/exec and IPC over Unix domain sockets to initialise the container then run the user-defined process.
Executing container runtime lifecycle hooks
In the fifth part of the series we handle the execution of hooks according to the phase of the container lifecycle.
Sending signals to a running container using 'kill'
In the sixth part of the series we learn how to send signals to a running container using the 'kill' operation.
Setting up the OCI Runtime Spec test suite
In the seventh part of the series we set up a virtual environment and configure the OCI Runtime Spec test suite to test our runtime's support for the OCI Runtime CLI.