Thanks for sharing!
When you set out to do this, had you studied docker's source code at all? Or did you just have a basic understanding of containers? Other than the link from OP, are there any resources you'd recommend to get one to the point where you have enough understanding of the concepts without having to "cheat" and look at the docker implementation?
I want to do this too, but it's not as much fun if you need to go to the source due to not understanding the fundamentals.
I started with a basic understanding about the parts involved, but not so much how they fit together. Most of the necessary information came from the lwn series of articles posted in another comment:
https://lwn.net/Articles/531114/
The actual namespace stuff was easy, the harder part was pivoting the root fs and figuring out all the things to mount. At some point I looked at the source for systemd-nspawn, but I forget exactly what for.
Thanks for the links. What was your starting point the Docker/Golang source?
I avoided looking at docker/runc as a starting point since that would spoil the fun of trying to figure it out from first principles. I looked at systemd-nspawn when I was stuck adding mounts.
https://github.com/kragniz/omochabako/blob/master/omochabako
https://asciinema.org/a/77296?speed=2&autoplay=true
I learned a lot doing this, and I'd recommend it to anyone who's interested about containers.