Skip to content
Devgo

Docker

A tool that packages an app and its dependencies into a container that runs anywhere. Docker solved 'it works on my machine' by bundling code, runtime, and libraries together. The foundation of modern deployment. Containers are lighter than VMs and start in seconds.

Created by

Solomon Hykes · Founded Docker (dotCloud) in 2013

When to use
  • Packaging apps for consistent deployment.
  • Local development environments.
  • CI/CD pipelines.
  • Microservices.
When not to
  • Single-binary apps with no deps (just deploy the binary).
  • Maximum security isolation (use VMs).

Definition

Docker packages an app into a — a runnable image with code, runtime, libraries, and config. Containers share the host OS kernel (lighter than VMs). Dockerfile defines the image build steps. Docker runs containers from images. Docker Compose orchestrates multi-container apps.

Why it exists

To solve environment differences ('works on my machine') by packaging the app with everything it needs, so it runs identically on any machine with Docker.

How it works

Write a Dockerfile (FROM base, COPY code, RUN install, CMD start). docker build creates an image. docker run starts a from the image. Containers share the host kernel but are isolated. docker-compose.yml defines multi-container apps. Images are layered and cached.

Scaling limits

Containers share the kernel (less isolation than VMs). Image sizes can be large (use multi-stage builds, slim bases). Root-by-default security concerns (use non-root). Orchestration at scale needs .

Cost shape

Free and open source (Docker Engine). Docker Desktop is free for small orgs, paid for large.

Alternatives

  • Podman — Daemonless, rootless, compatible but smaller ecosystem.
  • VMs — Stronger isolation but heavier and slower.

Failure modes

  • Image bloat.
  • crashes from missing deps.
  • Security (root containers).
  • Orchestration complexity at scale.

, ,