Ship Software Faster With Container
How many times we heared about “But this works in my computer”, “We could never seen this in other environments”, “6 weeks spent just to makt sure it will work in production, but we can never be 100% sure …”
If I am from IT department, I would pay a lot to stop these frustrating problems. The good news is that Docker made that possible. As it promises, Docker let you “Develop, Ship and Run Any Application, Anywhere”. The stable official V1.0 of Docker is released on 2014/06/09. From then, the world of virtualization step into the next generation: Containers.
why containers are better
So, what’s the big diffrence between containers and virtual machines? In shord words, containers are more lightweighted. Containers are like “processes” and virtual machines are like, by definition, “machines”. Obviously, machines have lots of software level overheads: operating system, drivers.
As this picture shows, virtual machines are managed by Hypervisor, which runs different operating systems, each of them is isolated form others. We call this OS isolation. On the other hand, containers are managed by container engine (Docker), which runs different applications, each application is not aware of others. This is called process isolation. The idea here is that our actual need is applications not the operating system, so just providing the necessary context for each process running upon one operating system other than running multiple operating systems saves a lot of computer resouces. It only tackes seconds to start a container and the application is already running. How much time it takes to start an operating system and all the initial services?
what containers cannot do
Of cause, containers have drawbacks, as we know containers run on one operating system, for example Docker containers run on Linux. It is not possible to run Windows application on a Linux container. So containers are OS dependent.
what Docker offers
Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. Consisting of Docker Engine, a portable, lightweight runtime and packaging tool, and Docker Hub, a cloud service for sharing applications and automating workflows, Docker enables apps to be quickly assembled from components and eliminates the friction between development, QA, and production environments. As a result, IT can ship faster and run the same app, unchanged, on laptops, data center VMs, and any cloud.
www.docker.com