This is a starting point for Go solutions to the "Build Your Own Docker" Challenge.
In this challenge, you'll build a program that can pull an image from Docker Hub and execute commands in it. Along the way, we'll learn about chroot, kernel namespaces, the docker registry API and much more.
Note: If you're viewing this repo on GitHub, head over to codecrafters.io to try the challenge.
The entry point for your Docker implementation is app/main.go
. Study and
uncomment the relevant code, and push your changes to pass the first stage:
git add .
git commit -m "pass 1st stage" # any msg
git push origin master
That's all!
Note: This section is for stages 2 and beyond.
You'll use linux-specific syscalls in this challenge. so we'll run your code inside a Docker container.
Please ensure you have Docker installed locally.
Next, add a shell alias:
alias mydocker='docker build -t mydocker . && docker run --cap-add="SYS_ADMIN" mydocker'
(The --cap-add="SYS_ADMIN"
flag is required to create
PID Namespaces)
You can now execute your program like this:
mydocker run alpine:latest /usr/local/bin/docker-explorer echo hey