This document discusses running Java applications in Docker containers. It begins with a minimal example of dockerizing a Java HTTP server application and shows that the default Docker image is quite large at 726 MB. Alternative base images and techniques are explored to significantly reduce the image size, such as using Alpine Linux, Java 9+ modules, and building a native Java runtime. Memory limits are also discussed, noting that the default Docker memory settings are not optimal and cgroups values or Java ergonomics should be used instead. With these techniques, the example application's Docker image size was reduced to as small as 35 MB.