Understanding Docker Internals: Building a Container Runtime in Python