Advantages of containers
Containers are virtual software objects which includes an application and all of the elements it needs to run.

A container:
  • Has the benefits of resource isolation and allocation
  • Runs in a host environment and shares the services that are provided by the host
  • Helps you build high-quality applications faster because you begin with software installed and configured
Containers are portable: Any platform with a container engine can run containers
Containers are easy to manage and provide “just enough” isolation
    Image result for Container Advantages

  • Container images are easy to share, download, and delete (especially with Docker registries)
  • Container instances are easy to create and delete
  • Each container instance is easy and fast to start and stop
  • More lightweight than virtual machines
  • Processes share the operating system kernel but are segregated
  • Containers use hardware more efficiently, Greater density than virtual machines (especially Docker containers, which can share layers)

Containers provide many of the same efficiencies as virtual machines. Containers speed development by giving the team a running start and by ensuring consistency. In addition, containers are lightweight in terms of processing resources than virtual machines. Containers automate the repetitive tasks of setting up and configuring development environments so that developers can focus on what matters, building great software. An example of resolving a runtime conflict. If two components use different versions of the Java runtime, each component can be put into a separate container with its runtime and the containers can be layered without conflict.

The challenge of containers

  • In the nutshell, you have a bunch of software provided by multiple vendors or teams that you want to run as part of your application and there are bunch of types of platforms you can run it.  This gets complicated very fast. So you must ask yourself a couple of questions. What are the challenges and what problem(s) does it solve?
    Image result for container challenges


  • First is the dependency matrix, which indicates that applications have direct dependencies. Each of these dependencies has their own dependencies, and so on. All of this must be identified.
  • Next, application maturity. As the application matures, and you upgrade dependencies, you have to deal with the dependency tree (the “matrix” of dependencies), and make sure that these dependencies are reflected in the 
  • What about getting it to work on multiple machines. Developers may struggle to deploy the latest code from the source repository across different workstations?
  • Finally, is the application is ready for the cloud. The traditional one-environment-at-a-time migrate/test strategy is hard enough when DevOps maintains control of every environment. But when it comes to Platform-as-a-Service (PaaS), and the environments are now outsourced, you are abstracted from the target environment, and the problems above compound and make it virtually impossible to reliably deploy an application.


-Ritesh

Disclaimer: “The postings on this site are my own and don’t necessarily represent IBM’s positions, strategies or opinions.”