Docker

What is Docker
Docker is a standalone software that can be installed on any computer to run containerized applications When we talk about Docker, its mostly we talk about Docker Engine.
Docker today is split between:
- Docker Engine - the open-source container runtime (successor to the old "Community Edition" naming)
- Docker subscription plans (Personal/Pro/Team/Business) - add Docker Desktop, Docker Hub features, and support on top of the open-source engine
About 'Enterprise Edition'
Older material sometimes refers to "Docker Enterprise Edition (EE)" - that product line was sold to Mirantis in November 2019 and no longer exists as a Docker offering (it lives on as Mirantis Kubernetes Engine). If you see EE/CE terminology in an older resource, treat it as historical, not current.
Docker has an open-source project called "Moby" to enable and accelerate software containerization.It's source code is available at github
History of Docker Company
- It's based out of San Francisco
- Started as dotCloud, a PaaS company co-founded by Solomon Hykes in Paris
- dotCloud leveraged Linux Containers (LXC) internally to run customer workloads
- Solomon Hykes built an internal tool to manage those containers and named it Docker
- dotCloud was rebranded as Docker, Inc. in 2013 once the tool was open-sourced
Docker Images vs Containers
Docker images are read-only templates used to build containers. Containers are deployed instances created from those templates. Images and containers are closely related, and are essential in powering the Docker software platform.
Docker Use Cases
- Dev/Prod Parity: When you want the code, environment, software version(s) everything same at both dev and prod
- Avoid Configuration headache
- Code Pipeline Management
- Developer's Productivity
- App Isolation: contain the blast radius between co-located microservices (note: this is process/resource isolation, not a security boundary by default - see Docker Security)
- Server Consolidation
- Debugging Capabilities
- Ease for multi-tenancy approach
Benefits of using Docker
- Portability - a container runs the same way on a laptop, a CI runner, and a production server, since the image bundles the app with its dependencies and runtime.
- Resource efficiency - containers share the host OS kernel instead of virtualizing a full guest OS, so you can run far more containers than VMs on the same hardware.
- Faster startup - containers start in seconds (sometimes milliseconds), compared to the minutes a full VM boot typically takes.
- Consistency across environments - eliminates the classic "works on my machine" problem, since dev, test, and prod all run the same image.
- Version control for infrastructure - Dockerfiles and images can be versioned, tagged, and rolled back just like application code.
- Ecosystem and tooling - a large registry (Docker Hub) of pre-built images, plus mature orchestration (Kubernetes, ECS) built around the same container format.
Getting Started
Before going to the next chapter, please make sure you have installed all the necessary software to run Docker on your local machine.
Install: Docker from here