OVERVIEW
Docker is the company driving the
container movement and the only container platform provider to address every
application across the hybrid cloud. Today’s businesses are under pressure to
digitally transform but are constrained by existing applications and
infrastructure while rationalizing an increasingly diverse portfolio of clouds,
datacenters and application architectures. Docker enables true independence
between applications and infrastructure and developers and IT ops to unlock
their potential and creates a model for better collaboration and innovation.
A little intro
to LXC: -
LXC (LinuX Containers) is a OS-level
virtualization technology that allows creation and running of multiple isolated
Linux virtual environments (VE) on a single control host. These isolation
levels or containers can be used to either sandbox specific applications, or to
emulate an entirely new host. LXC uses Linux’s cgroups functionality, which was
introduced in version 2.6.24 to allow the host CPU to better partition memory
allocation into isolation levels called namespaces . Note that a VE is distinct
from a virtual machine (VM), as we will see below.
Docker, previously called dotCloud,
was started as a side project and only open-sourced in 2013. It is really an
extension of LXC’s capabilities. This it achieves using a high-level API that
provides a lightweight virtualization solution to run processes in isolation.
Docker is developed in the Go language and utilizes LXC, cgroups, and the Linux
kernel itself. Since it’s based on LXC, a Docker container does not include a
separate operating system; instead it relies on the operating system’s own
functionality as provided by the underlying infrastructure. So Docker acts as a
portable container engine, packaging the application and all its dependencies
in a virtual container that can run on any Linux server.
What
They Do:-
Think of LXC as supercharged chroot on
Linux. It allows you to not only isolate applications, but even the entire OS.
Its helper scripts focus on creating containers as lightweight machines -
basically servers that boot faster and need less RAM. There are two user-space
implementations of containers, each exploiting the same kernel features:
· Libvirt,
which allows the use of containers through the LXC driver by connecting to
'lxc:///'. This can be very convenient as it supports the same usage as its
other drivers.
· Another
implementation, called simply 'LXC', is not compatible with libvirt, but is
more flexible with more userspace tools. It is possible to switch between the
two, though there are peculiarities which can cause confusion.
What is a Container?
A
container image is a lightweight, stand-alone, executable package of a piece of
software that includes everything needed to run it: code, runtime, system
tools, system libraries, settings. Available for both Linux and Windows based
apps, containerized software will always run the same, regardless of the
environment. Containers isolate software from its surroundings, for example
differences between development and staging environments and help reduce
conflicts between teams running different software on the same infrastructure.
LIGHTWEIGHT:
-
Docker
containers running on a single machine share that machine's operating system
kernel; they start instantly and use less compute and RAM. Images are
constructed from filesystem layers and share common files. This minimizes disk
usage and image downloads are much faster.
STANDARD:
-
Docker
containers are based on open standards and run on all major Linux
distributions, Microsoft Windows, and on any infrastructure including VMs,
bare-metal and in the cloud.
SECURE: -
Docker containers isolate applications
from one another and from the underlying infrastructure. Docker provides the
strongest default isolation to limit app issues to a single container instead
of the entire machine.
Comparing
Containers and Virtual Machines
Containers and virtual machines have
similar resource isolation and allocation benefits, but function differently
because containers virtualize the operating system instead of hardware.
Containers are more portable and efficient.
Containers
and Virtual Machines Together: -
Containers and VMs used together
provide a great deal of flexibility in deploying and managing apps.
Container
Standards and Industry Leadership: -
The launch of Docker in 2013 jump
started a revolution in app development - by bringing software containers to
the masses. In just a few years, Docker has transformed the industry with a new
lexicon, framework and standards in app development, packaging and management.
Starting with the pivot of dotCloud
and turning a piece of dotCloud into a better Linux container technology - one
that is portable, flexible, and easy to deploy. Docker open sourced the
libcontainer and partnered with a worldwide community of contributors to
further its development. By June 2015, just a couple short years later, Docker
donated the specification and runtime code now known as runC, to the Open
Container Initiative (OCI) to help establish standardization as the container
ecosystem grows and matures.
Following this evolution, Docker
continues to give back with the containerd project. Containerd is the core
container runtime of the Docker engine daemon, an industry-standard container
runtime with an emphasis on simplicity, robustness and portability, designed as
an embeddable component for higher level systems. Docker engine is built on
runC and containerd. This collaborative project enables portability for
developers, container standardization through the OCI, a growing ecosystem of
tools, and a free marketplace of images - pre-made apps that the community can
share and build on.
Advantages:-
MODERN
APP PLATFORM: -
The Docker platform is the only
container platform to build, secure and manage the widest array of applications
from development to production both on premises and in the cloud. Docker
Community Edition [CE] empowers developers with tools to build applications and
Docker Enterprise Edition [EE] provides IT with multi-architecture operations
at scale. Docker delivers both an engine for innovation that modernizes without
disruption while reducing total costs by more than 50%. Unlike other solutions
that specialize in a narrow slice of the enterprise IT portfolio, Docker
delivers operations at scale by addressing a diverse set of applications and
infrastructure for both developers and IT.
Simplicity
Docker makes powerful tools for
application creation and orchestration, accessible to everyone.
Openness
Built with open source technology and
a modular design makes it easy to integrate into your existing environment.
Independence
Docker creates a separation of
concerns between developers and IT and between applications and infrastructure
to unlock innovation.
(Source: docker.com)
Valuable post useful for everyone.Keep on sharing.
ReplyDeleteDocker and Kubernetes Training
This great article has really peaked my interest. I am going to book mark your blog and keep checking for new information about once per week.
ReplyDeleteOracle Training in Chennai | Certification | Online Training Course | Oracle Training in Bangalore | Certification | Online Training Course | Oracle Training in Hyderabad | Certification | Online Training Course | Oracle Training in Online | Oracle Certification Online Training Course | Hadoop Training in Chennai | Certification | Big Data Online Training Course
Docker and Kubernetes Training
ReplyDelete