Skip to main content

Docker

Overview

Docker is an open-source platform that automates the deployment, scaling, and management of applications using containerization. Containers allow developers to package applications and their dependencies into a standardized unit that can run consistently across different computing environments

Docker Homepage


Container

  • Containers encapsulate an application and its dependencies (libraries, configurations, etc.) into a single, portable unit. This isolation ensures that the application runs the same way regardless of the underlying environment.
  • Containers share the host system's kernel but run in isolated user spaces, which makes them lightweight compared to traditional virtual machines.

Docker Homepage

Images

  • Docker images are read-only templates that contain the application code, libraries, dependencies, and runtime. They serve as blueprints for creating containers.
  • Images are built in layers, which allows for efficient storage and reuse of components.
  • Usually stored on a docker repository like AWS ECR (private) or Docker Hub (public)

Docker Engine

  • Docker Engine is the runtime that executes containers. It runs on the host machine and manages container lifecycle, including creation, execution, and deletion.

Dockerfile

  • A Dockerfile is a text file containing instructions to build a Docker image. It defines the environment setup, dependencies, and commands to install and configure the application.

Docker Compose

  • Docker Compose is a tool for defining and running multi-container Docker applications. Using a docker-compose.yml file, developers can configure services, networks, and volumes to manage complex applications.

Docker Hub

  • Docker Hub is a cloud-based repository where Docker images can be stored, shared, and distributed. It provides a central location for accessing public and private images.
  • Public repository

Use Cases

1. Development and Testing:

Consistent Environments: Docker provides developers with consistent environments that mimic production settings, reducing "it works on my machine" issues.

2. Microservices Architecture:

Service Isolation: Docker enables the deployment of microservices, where each service runs in its container, allowing for isolated development, scaling, and maintenance.

3. Continuous Integration/Continuous Deployment (CI/CD):

Automation: Docker integrates with CI/CD pipelines to automate the building, testing, and deployment of applications.

4. Hybrid Cloud:

Flexibility: Docker facilitates the deployment of applications across various environments, including on-premises and cloud platforms, enabling hybrid cloud strategies.