Docker, Pros, Cons, Use Cases
August 04, 2017
Docker, Pros, Cons, Use Cases
Score 7 out of 10
Overall Satisfaction with Docker
A large global financial services provider based in London, faced increasing regulatory pressure and market demands—led by industry disruptors offering modern, digital services. Looking to increase innovation and productivity, Barclays set out to build an Application Platform-as-a-Service as part of its cloud program. It used Red Hat OpenShift Container Platform which incorporates Docker, along with other Red Hat solutions to update its IT infrastructure and adopt an agile, DevOps approach to application development, giving its developers on-demand, self-service capabilities. As a result, the bank improved its efficiency and agility to innovate faster and stay competitive.
- Docker brings in an API for container management, an image format and a possibility to use a remote registry for sharing containers. This scheme benefits both developers and system administrators.
- Docker allows for portability across machines. The application and all its dependencies can be bundled into a single container that is independent of the host version of Linux kernel, platform distribution, or deployment model. This container can be transfered to another machine that runs Docker and executed there without compatibility issues.
- Docker has a lightweight footprint and minimal overhead. Docker images are typically very small, which facilitates rapid delivery and reduces the time to deploy new application containers.
- Docker allows for sharing. You can use a remote repository to share your container with others.
- Docker provides great version control and component reuse. You can track successive versions of a container, inspect differences, or roll-back to previous versions. Containers reuse components from the preceding layers, which makes them noticeably lightweight.
- Docker has got into the bad habit of wrapping open source Linux technologies and promoting them in a way that makes it feel like Docker invented it. They did it to LXC and they are doing it to aufs and overlayfs.
- Docker is not very developer friendly.
- Docker containers are currently for software, not for data.
- New Docker versions cause breakage. You need all kinds of subtle regressions between Docker versions. It’s constantly breaking unpredictable stuff in unexpected ways.
- Docker does not have a command to clean older images, lifecycle management.
- Lack of kernel support.
- Faster Development.
- Integrated security and networking enhancements, simplification.
- Portability of an application and its dependencies.
Doocker lacks a lot of the scaling, automation, integration of 3rd party tools/solutions, and integration of shared high-performance self-healing storage, solutions like Heketi provide those missing pieces.
Each Docker container’s purpose is to run a single application. As such, the scope for a Docker container is built towards a particular application, as opposed to an entire operating system. The file system inside a Docker container is isolated to provide an environment similar to a VM. Docker further incorporates container management solution that allows for easy scripting and automation. There is a strong focus on execution time for containerized applications and the ease of scripting. For developers looking for a performance breakdown between a Docker container and virtual machines, a container will win every time. That being said, some applications don't respond well to running in a container, such as containers that have high IO and need high performance persisted data mounted across multiple nodes.