Возьмем просто Java класс:

public class Main {
    public static void main (String[] args) {
        System.out.println("Hello, Docker!");
    }
}

Его можно скомпилировать используя docker openjdk образ:

$ docker run --mount src=`pwd`,target=/test_container,type=bind openjdk javac /test_container/Main.java

Тут хитрость в том, что я подключаю к docker контейнер текущую директорию. На выходе в той же директории я получу Main.class. И тут же могу его запустить:

$ docker run --mount src=`pwd`,target=/test_container,type=bind openjdk java -cp /test_container Main
Hello, Docker!

В openjdk много разных тагов и я могу экспериментировать со всеми поддерживаемыми версиями jdk и jre. Очень удобно!