Software pros have heard all about Docker containers, the software-defined infrastructure technology. But how do...
Docker's features actually apply to enterprise environments? And how is Docker actually being used today?
Let's look at the Docker use cases that are driving its popularity and explore how Docker is likely to evolve in the enterprise going forward.
Docker's killer features
Briefly put, Docker's most attractive features include:
- A consistent environment for app deployment, regardless of the underlying infrastructure.
- The ability to deploy apps very quickly, since Docker containers take only seconds to start.
- A small footprint, especially compared to the overhead associated with traditional virtual machines.
All of the above adds up to "agile" software development and deployment operations. Docker containers can start, stop and scale quickly and easily. This is essential for organizations that have adopted a DevOps mindset.
Docker use cases
How do the features described above translate to real-world use? Here are several examples of the use cases that define Docker's value for organizations today.
Application testing and staging
Until Docker came along, one of the age-old problems of software development was maintaining consistency between environments in which code is tested and staged and environments in which it is deployed. Production hardware and software tend to vary widely, and it's difficult to make sure that you test an app for all possible deployment scenarios before it's put into production.
If you don't test for all scenarios, you end up with a situation where an app that worked fine in testing inexplicably breaks for certain users. This is a case where lack of consistency between staging and production environments reduces stability and makes application support difficult.
Containers make it easy to create identical staging and production environments. If you containerize your app, the environment in which it runs -- Docker -- will be identical whether it is hosted on a testing server, a staging server or a production server.
For now, this Docker use case is limited mostly to the data center. Few people are using Docker containers to deploy desktop or mobile apps, so Docker is not yet being leveraged to homogenize testing and production environments for mobile users. But that could happen in the future, as discussion of Docker for nonserver environments continues.
An alternative to cloud-based virtual servers
All of the major public cloud providers have now entered the container game. Amazon Web Services offers EC2 Container Service, Azure has Azure Container Service and Google Cloud includes Container Engine. These services all vary in the details, but each provides a managed hosting platform for deploying applications inside containers.
Because setting up and running containerized apps on these public cloud platforms is about as easy as creating virtual servers using the same clouds, the container services are emerging as an alternative to running cloud-based virtual servers.
For the many organizations that use the public cloud to host their apps or development environments, containers can offer clear advantages over traditional cloud infrastructure. With containers, there is no need to provision the environments in the way that admins would have to do when preparing a virtual server to deploy an app. There is also less overhead, because containers don't require the same amount of storage and compute resources that virtual servers do. That can translate into cost savings in the public cloud.
PaaS building blocks
Platform-as-a-service, or PaaS, offerings have traditionally been based on virtual servers running in the cloud. But PaaS providers like Heroku and Elastic Beanstalk are increasingly shifting toward Docker containers as the building blocks for their services.
In this scenario, containers are a win-win solution for PaaS providers and users alike. The former get a leaner infrastructure out of the deal, since PaaS no longer has to be built using full-blown virtual machines. Meanwhile, users get another deployment option for their apps in the form of Docker containers.
Containers have not yet become the sole basis for the major PaaS services. But they're clearly trending in the PaaS world.
Host legacy applications
The Docker use cases above pertain to rolling out new applications, but how many people are using it to run legacy apps that they previously hosted with virtual or bare-metal servers? That's the money question, since Docker's ability to conquer legacy apps -- instead of simply win over developers creating new apps -- is the biggest test of all for the platform's importance across the IT world.
So far, the evidence of organizations migrating legacy apps to Docker is limited, but it exists. There are studies of Docker use cases, some possibly sponsored by the company, about organizations migrating to the platform. Goldman Sachs says it is in the midst of migrating about 90% of its enterprise infrastructure to Docker -- a move that may seem less surprising when you consider that Goldman is also a major Docker investor.
Going forward, as today's new apps become tomorrow's legacy apps, it's a safe bet that Docker will be used more and more across the enterprise.
For now, the Docker use cases center primarily on situations that involve newer apps or that solve particular challenges for development and deployment teams. But expect broader use cases to emerge as containers continue to supplant virtual machines as the go-to building block for modern infrastructure.
Learn why Docker will overtake virtual machines
Pros of building the right staging environment
What you need to know about Docker container storage