/docker-on-jvm

A docker client that interacts with the docker registry, pulls and extracts the layers of the image and is able to run commands on that image. Uses the JNA (Java Native API) to issue unix specific commands.

Primary LanguageJava

progress-banner

This is a starting point for Java 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.

How to Run

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 ubuntu:latest echo hey