Containers & Server Software Deployment: The Push to Immutable Infrastructure

Using containers can solve the “golden image” problem—pulling you out of DLL hell—and, using object storage to make containers stateless makes running them a breeze.

shipping-containers-on-ship-sky-view
Shipping containers

The use of containers via Docker and Kubernetes has grown rapidly over the past several years. Although the roots of the technology have been around a lot longer, it got its big boost in the mid-2010s when Docker, Inc. made the building, sharing and running of images very developer friendly.

How Did Docker Make Containers Developer Friendly?

Docker did a lot to democratize the deployment of server software. Rather than having to requisition or use a shared Linux server to try an application, users could run the application on their laptop, very much the way it would be run in QA and production. Instead of having to find packages for a specific flavor and version of Linux or their desktop OS, users could simply bring up a predefined and configured container. More and more applications published images on the hub at Docker.com and provided docker-compose.yml files for easy deployment of related services.

How Does Use of Containers Improve Collaboration?

Getting developers, QA, support, and customers to configure and run things roughly the same way and to recognize their shared needs and tasks is key to developing successful software and reducing the frustration of “it works for me, why doesn’t it work for you?”

What are Containers?

There’s no real magic to containers—the container images are just the tarballs of a Linux OS and the application files. Running containers are just Linux processes that have a limited view of the world.

Can Containers Solve the “Golden Image” Problem?

In some ways, containers are like lighter-weight virtual machines, but they try to solve the golden image problem (referring to server software changes or upgrades that are difficult and become unmanageable). Use of Containers solves these issues by providing a simple and standard way to build images (Dockerfile) and to share them (Docker Hub or your own registry). Running containers is more efficient as they are sharing the same Linux kernel rather than running a separate copy in each.

It could be argued that containers are a declaration of surrender to package management and dependency/DLL hell. Rather than manage dependencies across a lot of unrelated software on a general Linux server, you deploy isolated images. Rather than upgrade software on your servers you deploy new container images, preserving only data volumes and configuration files.

The IT Cattle Call: Pushing to Immutable Infrastructure

This is all part of the general IT industry push towards immutable infrastructure for reliability and more regular software rollouts. It is a continuation of the movement towards treating servers as cattle, replaceable and scaled out, not pets named and cared for individually.

Although containers can use data volumes (that is, a file system directory that persists outside the lifetime of a container), it is not ideal. Preferably, containers only persist data using services like a database or object storage. Being stateless greatly simplifies container management and deployments.

cloud seeding with object storage containers

Cloud Seeding with Object Storage Containers

When you integrate the use of containers with object storage, it expands on the benefits of both technologies while removing the requirement for dedicated servers. This enables potential new use cases for object storage such as:

  • Mobile video (e.g., sportscasting and video editing on site without a server rack)
  • Mobile army hospitals and regional health systems (such as ambulances)
  • Workflows in public clouds (such as Azure, Amazon and Wasabi)
  • Complex needs such as local storage for telemetry with async feed to the hub
  • Edge clusters for IoT

On June 23, I will join Ryan Meek, Caringo Principal Solutions Architect, on our Tech Tuesday webinar: Cloud Seeding with Object Storage Containers. We will show you how easy it is to bring up a containerized, auto-configured Swarm Object Storage environment (even on a laptop) and discuss how containers can be used for continuous integration testing and deployment, all-in-one laptop environments, demos, customer setups or reproductions and production rollouts.

We’ll also show some examples of the power and flexibility of making Caringo Swarm available in your container ecosystem.

Please join us for the webinar and, if you have any questions or suggestions, feel free to get in touch.

Jam Afshar
Jam Afshar

About The Author

Jamshid “Jam” Afshar has worked on Caringo Swarm, Gateway and UI Engineering teams. He brings deep expertise in object storage to his work and is currently a Senior Consultant working with many of our large, high-profile customers.


More From Author