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.

0
linuxcontainersocigo

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.

4 min read
1
linuxcontainersocigo

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.

7 min read
2
linuxcontainersocigo

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.

8 min read
3
linuxcontainersocigo

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.

6 min read
4
linuxcontainersocigo

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.

16 min read
5
linuxcontainersocigo

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.

7 min read
6
linuxcontainersocigo

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.

7 min read
7
linuxcontainersocigo

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.

6 min read