In this chapter, we started reviewing the basic concepts of containers and how they are applied to Docker, one of the most popular products used for containerizing applications.
We then learned how to automate this process and made it part of the build process for a Java application, using Gradle as a build tool. The main intention behind automation is to be aligned to DevOps principles; we are going to talk about DevOps in detail in the following chapter. At the end of this chapter, we looked at other Docker tools that automate the provisioning process in development environments, and we also learned about Kubernetes and how it can be used for production environments. In the next chapter, we will review DevOps and release management concepts.