What is Docker? Understanding Containerization
Docker
A Docker
container is a packaging format that packages all the code and dependencies of
an application in a standard format that allows it to run quickly and reliably
across computing environments. A Docker container is a popular lightweight,
standalone, executable container that includes everything needed to run an
application, including libraries, system tools, code, and runtime. Docker is
also a software platform that allows developers to build, test, and deploy
containerized applications quickly. Containers as a Service (CaaS) or Container
Services are managed cloud services that manage the lifecycle of containers.
Container services help orchestrate (start, stop, scale) the runtime of
containers. Using container services, you can simplify, automate, and
accelerate your application development and deployment lifecycle. Docker and
Container Services have seen rapid adoption and have been a tremendous success
over the last several years. From an almost unknown and rather technical open
source technology in 2013, Docker has evolved into a standardized runtime
environment now officially supported for many Oracle enterprise products.
What are
containers?
Containers, or
Linux Containers, are a technology that allows us to isolate certain kernel
processes and trick them into thinking they're the only ones running in a
completely new computer. Different from Virtual Machines, a container can share
the kernel of the operating system while only having their different
binaries/libraries loaded with them. In other words, you don't need to have
whole different OS (called guest OS) installed inside your host OS. You can
have several containers running within a single OS without having several
different guest OS's installed. This makes containers much smaller, faster, and
more efficient. While a VM can take about a minute to spin up and can weigh
several Gigabytes, a container weighs, on average, 400 to 600mb (the biggest
ones). They also take only seconds to spin up. This is mostly because they
don't have to spin a whole operating system before running the process. And
this all began with six characters.
How Does Docker
Work?
Docker packages
an application and all its dependencies in a virtual container that can run on
any Linux server. This is why we call them containers. Because they have all
the necessary dependencies contained in a single piece of software. Docker is
composed of the following elements: a Daemon, which is used to build, run, and
manage the containers a high-level API which allows the user to communicate
with the Daemon, and a CLI, the interface we use to make this all available.
Docker
Containers
Containers are
abstractions of the app layer. They package all the code, libraries, and
dependencies together. This makes it possible for multiple containers to run in
the same host, so you can use that host's resources more efficiently. Each
container runs as an isolated process in the user space and take up less space
than regular VMs due to their layered architecture. These layers are called
intermediate images, and these images are created every time you run a new
command.
Docker engine
The open source
host software building and running the containers. Docker Engines act as the
client-server application supporting containers on various Windows servers and
Linux operating systems, including Oracle Linux, CentOS, Debian, Fedora, RHEL,
SUSE, and Ubuntu.
Docker images
Collection of
software to be run as a container that contains a set of instructions for creating
a container that can run on the Docker platform. Images are immutable, and
changes to an image require to build a new image.
Docker Registry: Place to store
and download images. The registry is a stateless and scalable server-side
application that stores and distributes Docker images.
Who uses Docker?
Docker is an
open application development framework that’s designed to benefit DevOps and
developers. Using Docker, developers can easily build, pack, ship, and run
applications as lightweight, portable, self-sufficient containers, which can
run virtually anywhere. Containers allow developers to package an application
with all of its dependencies and deploy it as a single unit. By providing
prebuilt and self-sustaining application containers, developers can focus on
the application code and use without worrying about the underlying operating
system or deployment system. Additionally, developers can leverage thousands of
open source container applications that are already designed to run within a
Docker container. For DevOps teams, Docker lends itself to continuous
integration and development toolchains and reduces the constraints and
complexity needed within their system architecture to deploy and manage the
applications. With the introduction of container orchestration cloud services,
any developer can develop containerized applications locally in their
development environment, and then move and run those containerized applications
in production on cloud services, such as managed Kubernetes services.
Docker and
developers
Containers can
be packaged by any kind of developer. Individuals in the software industry
often separate developers by specialization—front end, back end, or any
concentration between. While you mostly may see back-end developers packaging
containers, anyone familiar with CaaS basic concepts can succeed in this
particular area of the software development life cycle. Before you’re ready to
package your application’s dependencies, check out developer.oracle.com and
familiarize yourself with tools you can use to build your application or
program.
Docker versus
Kubernetes
Linux containers
have existed since 2008, but they were not well known until the emergence of
Docker containers in 2013. With the onset of Docker containers, came the
explosion of interest in developing and deploying containerized applications.
As the number of containerized applications grew to span hundreds of containers
deployed across multiple servers, operating them became more complex. How do
you coordinate, scale, manage, and schedule hundreds of containers? This is
where Kubernetes can help. Kubernetes is an open source orchestration system
that allows you to run your Docker containers and workloads. It helps you
manage the operating complexities when moving to scale multiple containers
deployed across multiple servers. The Kubernetes engine automatically
orchestrates the container lifecycle, distributing the application containers across
the hosting infrastructure. Kubernetes can quickly scale resources up or down,
depending on the demand. It continually provisions, schedules, deletes, and
monitors the health of the containers.
0 Comments