Containers Enable Consistent Deployment and Execution


Containers are popular with both developers and operators because they offer a simpler way to achieve deployment and execution consistency. They can also help to improve development and operations (DevOps) team handoffs.
Share

Considering Containers? Here’s What to Keep in Mind.

Nearly synonymous with containers, “Docker” as a term connotes many things:
  • a short-hand word used to represent container technology
  • a commercial venture-backed startup company: “Docker, Inc.”
  • an open source container project without a foundation governance model, “Docker project”
  • the brand for a commercial product produced by Docker, Inc.
  • the name often used for the popular open source runtime “Docker Engine”
  • a container image format known as a “Docker image”
  • a developer desktop tool-chain to simplify development and packaging “Docker for Mac & Docker for Windows”
There are other container sources.

There are open-source container projects, as well as a host of other commercial products available to create containers. You will need to decide what format is best for your organization.

Containers and virtualization are complementary.

To increase security and isolation, containers can be run in lightweight virtual machines. The hardware infrastructure (e.g., networks, servers and storage) required to support containers is more easily managed by virtualization.

Container orchestration does not make a platform.

A platform is a suite of capabilities that work together to offer developers and operators a simple way to deploy, monitor, manage, scale, secure, and connect applications. However, container technology is an important part of an enterprise platform: it is central to how applications are deployed and managed, but the systems that provide these capabilities are additive on top of the core container technology for running applications.

If you use containers, you will still need a robust deployment platform.

Like virtualization, where hypervisors and machine images are not a full virtualization platform, container technology is one piece of a larger set of responsibilities needed for an enterprise platform. DevOps teams have found that simply taking an image and creating a workload out of it as a container is not the full solution—for example, containerizing a workload does not automatically give DevOps the suite of features that teams would like with respect to capabilities such as high availability, auto scaling, traffic routing, and logging. Proven, integrated platforms like Pivotal Cloud Foundry give teams these capabilities.

If you use containers, you will still need an enterprise-grade security and management platform.

Taking an image and creating a workload out of it as a container also does not provide DevOps teams with an enterprise-grade experience because inherently containers lack capabilities such as security, high availability, application lifecycle management and more. For any organization seeking scale, security, and deployment consistency, an enterprise platform is required to provide the capabilities needed to run a workload as a container.

Your platform decision will be either build or buy.

Since the core notion of containers is devoid of any notion of the capabilities of a platform, your enterprise operators will be left having to bring these capabilities in on their own, either by writing their own tools or by pulling together a disparate set of tools, utilities, and products at varying levels of maturity from other sources and suppliers.

Cloud Foundry has worked with containers from the very beginning.

The original rationale for Cloud Foundry, which still holds true today, was anchored in two core ideas:

  • The ability to better utilize the underlying infrastructure
  • The ability to provide consistent, production-ready, resilient environments for developers in a highly productive and easy-to-use manner
Standards exist for container image format and runtime.

The Open Container Initiative (OCI) collectively works on helpful standards around a container image format and runtime. Developers and operations benefit from portability for containerized applications, while members benefit from member contributions. Pivotal was a founding member of the OCI.


Containers & Buildpacks

Cloud Foundry supports both developer-built containers and platform-built containers. Which option you use depends on how you prefer to manage your application dependencies and updates. With platform-built containers, Cloud Foundry uses buildpacks to package application lifecycle management. With developer-built containers the update lifecycle is handled outside the platform.


The Differences
Developer-built containers
Platform-built containers
Deploy applications as a container. Developers take the source code and all dependencies and wrap in a container definition. This package is deployed to the target environment.
Deploy application as code. Developers deploy raw or compiled source code that is packaged by the buildpack and published to the target environment.
Developer identifies middleware. In a container-based deployment, developers choose a base image, language dependencies, and middleware components that make up the portable image. The runtime environment takes and runs that container.
Platform handles middleware. Instead of developers selecting and configuring language runtimes and middleware, the buildpack assembles the container from a known good definition. The runtime environment takes and runs that container.
Bring your own language. Containers can include most any Linux-based technology inside. Developers have wide latitude as to which languages and dependencies to include.
Language support dependent on existing buildpack. While there are buildpacks for all major modern languages, a developer is constrained by the available buildpacks. There is an option, however, to construct a custom buildpack.
Developer is responsible for lifecycle management. If there are bugs or updates to language runtimes or middleware, it’s up to the developer to update the container and redeploy it to the target environment.
Platform handles much of the lifecycle management. Platforms such as Pivotal Cloud Foundry can take buildpack-based applications and update deployed containers to the latest runtime and middleware without developer involvement.