AI Insights
Showing results for 
Search instead for 
Did you mean: 

What is Docker and what can it do for your dev team?


By: Eric J Bruno

Two important characteristics of the cloud are that it can be rapidly provisioned and elastic in terms of matching fluctuations in user demand. This means you should be able to quickly spin up new instances of your cloud application or service along with the resources needed to support it. It should come as no surprise that cloud providers make heavy use of virtualization to achieve this. Recently, most of them have begun to support Docker, which takes virtualization to a new level with the concept of containers.

With Docker, you define micro-environments within which you configure and run your application. Overall, containers spin up fast and provide a layer of isolation from other services running in separate containers, even on the same server (virtual or physical). As a result, you avoid the conflicts, dependencies, and inconsistent environments often encountered when deploying distributed software systems.

How Docker works

To understand how Docker works, let's start with virtualization. Figure 1 shows a typical virtual server implementation, where you have an operating system (such as Linux) installed on a physical server. Running on the server is a hypervisor (such as VMware) within which you can run one or more virtual operating systems (virtual OSs). Each virtual OS can run your applications as usual.

 Figure 1

Figure 1

As shown in Figure 1 above, each application within a virtual OS shares a single set of resources, such as memory, the filesystem, users and their security, and so on. If you reconfigure the OS, or update a dependency for one application, that change will affect the other applications as well. It can also open the door to security breaches across applications.

Containers take virtualization to the next level to achieve a higher level of application and resource isolation. Figure 2 shows that container software such as Docker works much in the same way as a hypervisor. However, each container managed by Docker is much more lightweight than a virtual OS and runs your applications isolated from one another in terms of processes, memory, the filesystem, and so on.

Figure 2

Figure 2

For an application running within a container, it appears as though it's the only application process running on the entire server. Docker uses low-level facilities built into the Linux kernel (see Figure 3 below) to achieve isolation in terms of CPU usage, processes, memory space, IO, users and security, and even the network.


Figure 3 (Photo Credit:

In fact, you can configure further restrictions on these resources as needed (for example, process quotas) or to enforce stricter security requirements.

How Docker helps cloud development

With an understanding of how Docker works, let's shift back to the cloud. Docker shares many characteristics with the cloud, such as the ability to spin up applications and services quickly, allowing you to grow and shrink capacity along with demand (elasticity). This means that developers who package and deliver their applications as Docker containers know with confidence that they will run as intended no matter where they're deployed.

This eliminates concerns around configuring test servers and production servers to match the original development environment. It also ensures that no matter where the server exists (in your data center, private cloud, or public cloud) your application will run in the same manner. More importantly, it delivers cloud provider independence; as long as your provider supports containers—and many do support Docker today—your applications and services will run there unchanged.

These benefits are directly in line with DevOps, which is about collaboration between developers and operations IT staff, enabling a rapid release cycle with a feedback loop for improvement. Docker integrates with development tools, environments, DevOps tools, and continuous delivery systems to automate the packaging and deployment of containers to any of your cloud environments.

The workflow Docker creates helps developers focus less on software builds and server configuration and more on building features that users want and need. Docker support has been integrated with other cloud projects and management tools, such as OpenStack, Cloud Foundry, Puppet, and Vagrant. Overall, this helps to remove bottlenecks in the deployment process, helping your IT staff and fostering an agile DevOps delivery process.

Containers = hybrid cloud power

Docker is a disruptive technology that helps developers rapidly deliver working applications in cloud environments with confidence. It transparently enables a hybrid cloud environment, where workloads can easily be spun up, moved, or redeployed across private and public cloud environments as you choose, or as user demand requires. In the end, development based on Docker provides development agility along with the peace of mind that you're not stuck with a single cloud provider.

Want to learn more about containers? Read how containers address significant marketplace needs in Building a Better Cloud Through Container Technology. To learn how containers and VMs are coexisting in today's enterprise, check out Containers vs. virtualization: Is it really a competition?

0 Kudos
About the Author