This is a starting point for Rust 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.
git submodule update --init --recursive
Please ensure you have Docker installed locally.
Next, add a shell alias:
alias mydocker='docker build -t mydocker ./docker && 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 ubuntu:latest /usr/local/bin/docker-explorer echo hey
mydocker run ubuntu:latest bash -c 'echo "This is a stdout output" >&1'
mydocker run ubuntu:latest bash -c 'echo "This is a stderr output" >&2'
This command compiles your Rust project, so it might be slow the first time you run it. Subsequent runs will be fast.
You can test your program like this:
# Test shell output
./test_shell_output.sh
# Test your docker command
./test_your_docker.sh