by Changepond Posted on July 17, 2018
Containers can squeeze in more applications on the same hardware better than technologies as well as manage and deploy applications on different hardware much faster
What are containers and why do you need them?
Containers are a solution to the problem of how to get software to run reliably when moved from one computing environment to another. This could be from a developer's laptop to a test environment, from a staging environment into production, and perhaps from a physical machine in a data center to a virtual machine in a private or public cloud.
Issues arise when the supporting software environment is not identical, an example; If you are going to test using Python 2.7, and then it's going to run on Python 3 in production and something weird will happen. You'll run your tests on Debian and production is on Red Hat and all sorts of weird things happen." Containers help in solving this problem.
How do containers solve this problem?
Put simply, a container consists of an entire runtime environment: an application, plus all its dependencies, libraries and other binaries, and configuration files needed to run it, bundled into one package. By containerizing the application platform and its dependencies, differences in OS distributions and underlying infrastructure are abstracted away.
What's the difference between containers and virtualization?
With virtualization technology, the package that can be passed around is a virtual machine, and it includes an entire operating system as well as the application. A physical server running three virtual machines would have a hypervisor and three separate operating systems running on top of it.
By contrast a server running three containerized applications with Docker runs a single operating system, and each container shares the operating system kernel with the other containers. Shared parts of the operating system are read only, while each container has its own mount (i.e., a way to access the container) for writing. That means the containers are much more lightweight and use far fewer resources than virtual machines.
What other benefits do containers offer?
A container may be only tens of megabytes in size, whereas a virtual machine with its own entire operating system may be several gigabytes in size. Because of this, a single server can host far more containers than virtual machines and it can get in more applications on the same hardware, more than other technologies.
Another major benefit is that virtual machines may take several minutes to boot up their operating systems and begin running the applications they host, while containerized applications can be started almost instantly. That means containers can be instantiated in a "just in time" fashion when they are needed and can disappear when they are no longer required, freeing up resources on their hosts.
A third benefit is that containerization allows for greater modularity. Rather than run an entire complex application inside a single container, the application can be split in to modules (such as the database, the application front end, and so on). This is the so-called microservices approach. Applications built in this way are easier to manage because each module is relatively simple, and changes can be made to modules without having to rebuild the entire application. Because containers are so lightweight, individual modules (or microservices) can be instantiated only when they are needed and are available almost immediately.
Running Containers in Cloud
Running containers in cloud allows customers to build Robust, scalable applications and services by leveraging the benefits of public cloud such as elasticity, availability, security and availability with pay for what you use model. AWS elastic container service provides service which supports Docker containers we containerize secure and build highly scalable services and can be integrated with other services providing complete solution for running wide range of containerized applications. In a nut shell combining cloud and containers bring in lot of value adds to the business with high end performance at an optimized cost.