Building Images
-
Introduction to Containerization3m
-
Building Images with Dockerfile: Basic Syntax, App Launch, Tags, and Build Context10m
-
Building Images with Dockerfile: App Shutdown, Image Layers, and Caching10m
-
Building Images with Dockerfile: Runtime User, Multi-Stage Builds, Inspecting Images8m
-
Building Images for Java Applications with JIB8m
-
Building Images with Buildpacks: The Cloud Native Buildpacks Project11m
-
Building Images with Buildpacks: pack, Spring Boot, kpack, and Paketo Buildpacks10m
-
Top Takeaways from the Building Images Course3m
-
CompletedConclusion
Before you move onto the next course, let’s take a moment to review what we learned in the Building Images course.
Cora Iberkleid
Part Developer Advocate, part Advisory Solutions Engineer at VMware
Cora Iberkleid is part Developer Advocate, part Advisory Solutions Engineer at VMware, helping developers and enterprises navigate and adopt modern practices and technologies including Spring, Cloud Foundry, Kubernetes, VMware Tanzu, and modern CI/CD.
Thank you for joining me in this course on building images. As we've seen, containerization is changing the landscape of how we package applications. The end result is applications that can be deployed and run across computers in a more consistent and predictable way, but this means that the burden of providing and packaging dependencies is shifting left into the build cycle. There are a number of tools that can help us do this successfully and in this course, we looked at three different approaches, Dockerfile, Jib, and Cloud Native Buildpacks using Paketo.
With Dockerfile, you write your own script to assemble an image, using a fixed set of valid Dockerfile instructions. Overall, you can see that working with Dockerfile is a double-edged sword. On one hand, you have full control over your application's behavior and environment, but on the other Dockerfile authors must become knowledgeable about many low-level details, and there's plenty of room for error.
Higher level tools aimed to abstract away some of these challenges. One example for Java applications in particular is Jib, a plugin that integrates seamlessly with a Mave integratal workflow. Jib has garnered wide adoption since its introduction in 2018, since it alleviates Java developers from having to deal with Docker CLI, Docker Demon and Dockerfiles, and it incorporates some optimizations for Java, but its model is relatively simple and it doesn't address use cases related to re-usability, modularity, governance and integration with agents or other commodity products.
The Cloud Native Buildpacks Project provides a leap forward with a well-designed API based approach that fosters an ecosystem of platforms and Buildpacks. It leverages the latest capabilities of modern container standards to offer substantial optimizations and advanced features such as OS rebasing. It provides a foundation for governance, consistency, observability and ensuring and enforcing security measures.
In addition, the variety of existing platforms makes Cloud Native Buildpacks easy to use and enables us to address very different use cases while still guaranteeing the same image will be built from the same source. Finally, we saw that Paketo Buildpacks enables us to leverage the maturity of the previous generation of Cloud Foundry Buildpacks and improves upon it with modularized Buildpacks that can be configured in a standard way.
I hope you enjoyed this course and that you learned valuable information that you can put to use right away supporting and improving existing images or creating new ones and if you explore more containerization tools in the ecosystem, I hope your understanding of Dockerfile, Jib, the Cloud Native Buildpacks Project, and Paketo Buildpacks can help you better assess other options that you encounter. Happy building.
Give Feedback
Help us improve by sharing your thoughts.