As a CIO you may be wondering if this “Container” fad has legs or may go the way of some other fads. Are containers just another piece of technology you will have to worry about maintaining 10 years from now and wish you hadn’t gone down this path?
Docker the leader of the pack and right now the only real player in this market is experiencing the most growth ever for any startup ever. In the 2+ years since inception it has now got 2 billion pulls (2 billion containers) delivered using the docker framework. The rate of pulls is doubling every 3 months. (This is as of March 2016.)
You may doubt the incredible enthusiasm around the container buzz right now. This would be wrong.
Containers is not a new thing. Ever since Linux cgroups many years ago the ability to build lightweight containing technology existed and was used by some people. The enthusiasm around containers arises because it solves a number of critical problems and has become a standard. Virtually everyone packages things in Docker now. By doing so they create an easy way for others to use their technology, much easier than ever before. It is simply a matter of issuing a single docker command to spin up virtually any docker instance of a container in less than 1 second.
You can find 170,000 containers of virtually anything in docker hub. Virtually all IaaS, PaaS and systems including Microsoft are now supporting or will support Docker containers. It becomes by far the simplest way to get something up and running. Several companies have made a living helping you startup docker containers but I hate to say I don’t think that just starting a docker container for you is any great help.
These companies don’t solve the problems of using any software or really any problem of using docker. Nonetheless here are the lists of advantages and drawbacks to containers.
Containers have the following advantages and disadvantages:
Advantages of Containers
- Lighter weight than VMs
- The portability and most of the isolation of VMs without the cost
- Faster Finding, Invocation and Deployment
- Has become the defacto application delivery format
- Scalable to thousands means web-scale easily and cheaply
- Supported by almost everything and everyone
- Easier to maintain than VMs
- Better reuse for more efficiency
- Makes it easier to acquire and use open source, closed source software
- Standardized management of components
Disadvantages of Containers
- More containers means more things to manage, more things to go wrong.
- More containers means more things to upgrade, patch for security
- Doesn’t solve the integration problem
- Harder to configure than regular non-contained services
Most of these disadvantages can be overcome with some automation and intelligence.
The container revolution means a lot of things are possible that were much harder than before.
The common interface for containers means that managing services has become immensely easier in one sense but this also means a proliferation of services makes this problem larger. What a developer or DevOps engineer could do to create a virtual machine is now done by 10 containers. The ability to spin these containers up fast and in replicas easily means that you may have 100 containers running before you know it.
A DevOps person cannot configure and manage so many containers. Containers need to be operated “automatically.” DevOps automation therefore becomes essential. You must consider the cost of writing this automation and maintaining it as part of your code base for your applications.
Docker doesn’t change anything
Many of the same technology problems we’ve had forever are still problems with Docker or containers.
- Dependencies — dependencies between components is still difficult problem
- Integration — Docker doesn’t make 2 things work together by itself. You still have to build integration.
- Reliability — Docker doesn’t solve failing code and containers, things still fail
- Security — Docker doesn’t solve or even help much in your security issues
- Management — Docker gives you a uniform way to talk to services, instantiate them and configure them but it’s still necessary to do that. In fact, the number of Docker containers in most installations means the work to managing and corralling them is harder
- Performance — The ability to spin up thousands of docker images in seconds will not prevent a terrible performance problem in your application or stack cause terrible performance for users
- Waste — Docker doesn’t prevent you from wasting resources in any software process whether involving humans or application or machines
- Good user interfaces — Docker doesn’t have anything to do with the user interface of your product and is completely invisible to users
Nonetheless, Docker does make life a lot easier in many ways and there are ways to address some of the deficiencies of the success of Docker go away.