KubeAcademy by VMware
Introduction to Containerization
Next Lesson

This lesson provides a brief introduction to containerization and sets the groundwork for the rest of the 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.

View Profile

Welcome to this course on building images. My name is Cora Iberkleid, and I'm an advisory solutions engineer at VMware.

In this course, we'll learn a few different ways to turn applications into container images. We'll start with a brief introduction to containerization, and then we'll cover Dockerfile, Jib, and the Cloud Native Buildpacks Project using Paketo Buildpacks.

Let's start with a brief introduction to containerization. This flow probably looks familiar. You start with source code, package your application, and deploy it to a virtual machine that's been prepared for the application. For example, in the context of Java, this means that you build your WAR file or your JAR-file, and deploy it to a machine that's been prepared with an operating system, a JRE, potentially an app server, maybe even some shared libraries and configuration. More generally, the application package is the deployable artifact, and the virtual machine is the infrastructure abstraction layer that we work with. The gap in between all of the dependencies that the app needs to function is usually the responsibility of an operations team. With container platforms, such as Kubernetes, this paradigm changes. Rather than install these dependencies directly onto a virtual machine we bundle them with our application into a package called an image, and we deploy the image to the container platform. These images are our new deployment artifacts.

Why is this shift happening? We want to be able to deploy and run software in a repeatable and reliable way across computers. The way to accomplish that is precisely to package all dependencies with the application using a standard packaging format. Our task is to build this new deployable artifact, called an image, using a standard format, namely Docker or OCI, the open container initiative specification. We can then deploy our images to a container platform, such as Kubernetes. Containers are simply the running instances of our images.

There are a variety of tools available to help us turn our applications into images. In this course, we'll cover Dockerfile, which enables you to write your own script, and some higher level tools, Jib, a Google Plugin for Java applications, and the Cloud Native Buildpacks Project using Paketo Buildpacks. As we go through these keep in mind the factors for which we want to optimize. We want to make sure that our builds are consistent across applications and across teams, and that our builds are quick. We also want to consider security concerns, and provide transparency and governance over the contents of our images, especially over time and at scale. With that, let's get started building images.

Give Feedback

Help us improve by sharing your thoughts.

Share