Docker — Use containers to Build, Share and Run your applications

A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries, and settings.

Docker is a container platform. It provides a complete ecosystem of tools to build container images, pull these images from known registries, deploy containers, and manage or orchestrate running containers across a cluster of machines. Docker has popularized container adoption. Even the phrase “dockerize my app” has become common.

The word “Docker” usually refers to its engine. The commercial offering is called . There’s also the free community edition that’s simply called . Docker was initially available on Linux but later become available on MacOS and Windows as well.

What are the benefits of using Docker?

Docker provides a consistent runtime across all phases of a product cycle: development, testing, and deployment. For example, if development team has upgraded one dependency, other teams must also do the same. If they don’t, app may work during development but fail in deployment or work with unexpected side effects. Docker overcomes this complexity by providing a consistent environment for your app. Hence, it’s become essential for DevOps practice.

Docker containers are smaller in size and boot up faster compared to VMs. They’re also more cost efficient since many more containers than VMs can run on a machine.

Docker is open source. There’s freedom of choice since any type of application (legacy, cloud native, monolithic, 12-factor) can run in a Docker container. Security is built into the Docker Engine by default. It’s powered by some of the best components such as the . There’s also powerful CLI and API to manage containers. Via certified plugins, we can extend the capabilities of the Docker Engine.

Which are the essential components of the Docker ecosystem?

The Docker Engine is a client-server app of two parts: the Docker Client and the Docker Daemon. Docker commands are invoked using the client on the user’s local machine. These commands are sent to daemon, which is typically running on a remote host machine. The daemon acts on these commands to manage images, containers and volumes.

Using Docker Networking we can connect Docker containers even if they’re running on different machines. What if your app involves multiple containers? This is where Docker Compose is useful. This can start, stop or monitor all services of the app. What if you need to orchestrate containers across many host machines? Docker Swarm allows us to do this, basically manage a cluster of Docker Engines.

Docker Machine is a CLI tool that simplifies creation of virtual hosts and install Docker on them. Docker Desktop is an application that simplifies Docker usage on MacOS and Windows.

Among the commercial offerings are Docker Cloud, Docker Data Center and Docker Enterprise Edition.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store