Skip to content
Go back

Containers and Containerization - Docker

Published:

Introduction to Containers


1. Traditional Computing Challenges in Software Development

Traditional computing environments pose several issues that hinder efficient software development and deployment:


2. What Are Containers?

Containers are lightweight, isolated, portable units of software that encapsulate an application along with its runtime dependencies (libraries, binaries, system tools, and configuration files). They allow developers to build, ship, and run applications consistently across different computing environments.

Key Characteristics of Containers


3. Container Engine Functionality

A container engine virtualizes the operating system and manages the lifecycle of containers. It ensures that all required components (code, runtime, libraries) are bundled together and executed in isolation.

Examples:


4. Benefits of Containerization

BenefitDescription
Faster DeploymentAutomate builds and deployments for rapid release cycles.
Improved Resource UtilizationMultiple containers can run on a single host, maximizing CPU and memory usage.
PortabilityRun consistently across Windows, Linux, Mac, cloud providers, etc.
Support for Modern ArchitecturesIdeal for microservices, CI/CD pipelines, and cloud-native applications.
Environment ConsistencyEliminates discrepancies between dev, test, staging, and production environments.

5. Container Use Cases


6. Container Challenges

Despite their benefits, containers also introduce challenges:


VendorFeatures
DockerMost popular container platform; easy-to-use CLI and ecosystem support.
PodmanDaemon-less, more secure alternative to Docker; integrates well with systemd.
LXC / LXDFull system containers ideal for data-intensive applications and long-running processes.
VagrantFocuses on development environments; offers high levels of isolation using VMs or containers.

8. Containers vs Virtual Machines (VMs) (Advanced Note)

FeatureContainersVirtual Machines
OS DependencyShare host OS kernelRun full guest OS
Startup TimeMillisecondsSeconds
Resource UsageLightweightHeavyweight
Isolation LevelProcess-levelKernel-level
Use CaseMicroservices, CI/CDLegacy apps, full OS environments

9. Role in Cloud-Native Development

Containers are foundational to cloud-native development, enabling:

They align perfectly with modern practices such as GitOps, CI/CD, Infrastructure as Code (IaC), and immutable infrastructure.


10. Conclusion

Containers have revolutionized how software is developed, deployed, and managed. They provide a consistent, lightweight, and scalable solution for overcoming many limitations of traditional computing models. However, successful adoption requires addressing security, management, and architectural considerations.

As organizations move toward DevOps maturity, embracing containerization—alongside orchestration tools like Kubernetes—is essential for building robust, agile, and future-proof systems.


Further Reading & Tools


Introduction to Docker


1. What is Docker?

Docker is an open-source platform introduced in 2013 that enables developers to develop, ship, and run applications inside containers — lightweight, isolated, and portable environments.

Key Features of Docker


2. Docker Architecture Overview

Components of Docker Engine

ComponentDescription
Docker Daemon (dockerd)Background process managing images, containers, networks, and storage.
Docker Client (docker CLI)Interface used by users or scripts to interact with the daemon.
REST APIEnables interaction between clients and daemons via HTTP endpoints.

Underlying Technologies


3. The Docker Process Flow

  1. Develop Application Locally
  2. Create a Dockerfile – Defines the image structure.
  3. Build Image – Using docker build, creates a reusable image.
  4. Push Image – To a registry like Docker Hub or private registry.
  5. Pull Image – On another machine/environment.
  6. Run Container – Using docker run to instantiate the image into a running container.
  7. Orchestrate & Scale – Using Docker Compose or Kubernetes for multi-container apps and scaling.

4. Docker Ecosystem & Tools

ToolDescription
Docker CLICommand-line interface to manage Docker objects.
Docker ComposeDefine and run multi-container Docker apps using a YAML file.
Docker SwarmNative clustering and orchestration tool for Docker.
Docker Hub / RegistryCentralized repository for Docker images.
Plugins & ExtensionsSupport for volume drivers, network plugins, logging drivers, etc.
PrometheusMonitoring integration for container metrics.

5. Benefits of Docker Containers

BenefitDescription
Consistent Environments”It works on my machine” problem eliminated.
Fast DeploymentContainers start in seconds due to shared OS kernel.
Lightweight ImagesUse copy-on-write and layering to keep size minimal.
Improved CI/CD PipelineIntegrates seamlessly with automation tools.
Version ControlSupports tagging, rollback, and versioned deployments.
PortabilityRun on any system supporting Docker—local, cloud, hybrid.
Modular DevelopmentIdeal for microservices-based architecture.

6. Docker in DevOps Practices

Docker supports modern DevOps methodologies, including:


7. Challenges of Docker Containers

ChallengeDescription
Security ConcernsShared OS kernel can expose vulnerabilities; requires hardening and least privilege policies.
Stateful ApplicationsDocker is better suited for stateless apps; persistent data needs external volumes or StatefulSets in Kubernetes.
Performance OverheadNot ideal for high-performance computing (HPC) or GPU-intensive tasks.
Monolithic ApplicationsHarder to containerize and scale monoliths compared to microservices.
GUI-Based ApplicationsDocker is not optimized for rich GUI apps like desktop software.
Container SprawlManaging many containers at scale becomes complex without orchestration tools.

8. When NOT to Use Docker

Avoid Docker if your application:


9. Real-World Use Cases

Use CaseDescription
Microservices ArchitectureEach service runs in its own container, independently scalable.
CI/CD AutomationStandardized test/build/deploy pipelines using Docker images.
Hybrid Cloud DeploymentsConsistent environments across on-premises and cloud platforms.
Local Development EnvironmentsReplicate production setup locally using Docker Compose.
Service Mesh IntegrationCombine with Istio or Linkerd for advanced networking and observability.

10. Conclusion

Docker has transformed how modern applications are developed, deployed, and maintained. Its ability to provide consistent, isolated, and portable runtime environments makes it a cornerstone of cloud-native and DevOps practices.

However, successful implementation requires understanding its strengths and limitations, especially when scaling, managing security, or integrating with orchestration tools like Kubernetes.


Further Reading & Resources


Building and Running Containers with Docker


1. Container Lifecycle Overview

The process of building and running containers follows a structured lifecycle:

  1. Create a Dockerfile – Defines the blueprint for your container image.
  2. Build an Image – Using docker build from the Dockerfile.
  3. Run a Container – Instantiate the image into a running container using docker run.
  4. Manage Images & Containers – Use commands like docker images, docker ps, docker push, and docker pull.

2. Dockerfile: The Blueprint of a Container

A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image.

Sample Dockerfile

FROM ubuntu:latest
CMD ["echo", "Hello World"]

Key Dockerfile Instructions

InstructionPurpose
FROMSpecifies the base image (e.g., Ubuntu, Alpine).
RUNExecutes commands during the build phase (e.g., installing packages).
CMDDefault command executed when running the container.
ENTRYPOINTConfigures a container to run as an executable.
COPY / ADDCopies files/directories into the image.
WORKDIRSets the working directory for subsequent instructions.
EXPOSEDocuments which ports the container listens on.
ENVSets environment variables.

3. Building a Docker Image

Command Syntax

docker build [OPTIONS] PATH

Example Command

docker build -t my-app:v1 .

What Happens During Build?

  1. Docker reads the Dockerfile.
  2. Each instruction creates a new layer in the image.
  3. Layers are cached for faster rebuilds.
  4. Final output: A tagged image ready to be run or pushed to a registry.

Verify Image Creation

docker images

This lists all local images including:


4. Running a Container

Command Syntax

docker run [OPTIONS] IMAGE[:TAG]

Example Command

docker run my-app:v1

This:

  1. Creates a new container instance from the image.
  2. Runs the default command (CMD in Dockerfile).
  3. Outputs: Hello World

5. Managing Containers

Common Docker CLI Commands

CommandDescription
docker buildBuilds an image from a Dockerfile.
docker runRuns a new container from an image.
docker psLists running containers (-a shows stopped ones).
docker stop <container>Gracefully stops a running container.
docker rm <container>Removes a stopped container.
docker imagesLists all available images.
docker rmi <image>Removes an image.
docker pull <image>Pulls an image from a registry.
docker push <image>Pushes a locally tagged image to a registry.
docker inspectShows detailed info about a container/image.
docker logs <container>Displays logs from a running/stopped container.

6. Advanced Tips for Building Efficient Images

Best Practices

Multi-Stage Build Example

# Stage 1: Build
FROM golang:1.20 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# Stage 2: Runtime
FROM alpine:latest
COPY --from=builder /app/myapp /myapp
CMD ["/myapp"]

7. Real-World Workflow Example

Step-by-step CI/CD Integration

  1. Developer commits code to Git.
  2. CI pipeline triggers docker build.
  3. Tests are run inside the container.
  4. If tests pass, docker push to registry (e.g., Docker Hub, ECR).
  5. Deployment system pulls image and runs it via docker run.

8. Troubleshooting Containers


9. Summary

TopicKey Points
DockerfileBlueprint defining how to build an image.
ImageImmutable template built from Dockerfile.
ContainerRunning instance of an image.
Commandsbuild, run, images, ps, pull, push
Use CaseAutomate application packaging, testing, and deployment.
Best PracticesMulti-stage builds, layer optimization, meaningful tagging.

Introduction to Docker Objects


1. Overview of Docker Objects

Docker uses several core objects to manage and run applications in containers. These include:

ObjectDescription
DockerfileA text file containing instructions for building an image.
ImageA read-only template with instructions for creating a container.
ContainerA runnable instance of an image.
NetworkEnables communication between containers and the outside world.
Volume / Bind MountManages persistent or shared data between containers and host.
PluginExtends Docker functionality (e.g., networking, storage drivers).

2. Dockerfile: The Foundation of an Image

A Dockerfile is a blueprint used to build a Docker image.

Essential Dockerfile Instructions

InstructionPurpose
FROMSpecifies the base image (must be the first instruction).
RUNExecutes commands during image build (e.g., installing packages).
CMDSets the default command to run when the container starts (only the last CMD is effective).
ENTRYPOINTConfigures the container to run as an executable.
COPYCopies files from the host into the image.
ADDSimilar to COPY, but supports remote URLs and automatic unpacking of archives.
WORKDIRSets the working directory for subsequent instructions.
EXPOSEDocuments which ports the container listens on (does not publish them).
ENVSets environment variables inside the image/container.

⚠️ Best Practice: Use .dockerignore to exclude unnecessary files from the build context.


3. Docker Images: Read-Only Templates

An image is a static, read-only snapshot that includes:

Image Layers

Image Naming Convention

Format:

[<registry-host>:<port>/]<repository>:<tag>

Example:

docker.io/ubuntu:18.04
PartDescription
docker.ioHostname of the registry (e.g., Docker Hub)
ubuntuRepository name (group of related images)
18.04Tag indicating version or variant

📌 If the registry is omitted (e.g., nginx:latest), Docker defaults to Docker Hub (docker.io).


4. Containers: Runnable Instances of Images

A container is a live, running instance of a Docker image.

Key Features of Containers

Common Container Operations

CommandDescription
docker runCreates and starts a container.
docker stopGracefully stops a running container.
docker startStarts a stopped container.
docker rmRemoves a container.
docker execRuns a command inside a running container.

5. Docker Networking: Communication Between Containers

Docker provides virtual networks to allow containers to communicate securely.

Types of Docker Networks

Network TypeDescription
Bridge (Default)Default network where containers connect unless otherwise specified.
HostUses the host’s network stack directly (less isolation).
OverlayEnables multi-host networking (used with Docker Swarm or Kubernetes).
NoneDisables all networking for a container.

Managing Networks

docker network create my-network
docker network ls
docker network inspect my-network

You can attach a container to one or more networks at runtime:

docker run --network=my-network my-app

6. Docker Storage: Managing Persistent Data

By default, data inside a container is ephemeral — it’s lost when the container is removed.

Persistent Data Options

OptionDescription
VolumesManaged by Docker; best for persistent data (e.g., databases).
Bind MountsMounts a file or directory from the host machine into the container.
tmpfs MountsStores data in memory only (not persisted to disk).

Using Volumes

docker volume create my-data
docker run -v my-data:/app/data my-app

This mounts the volume my-data into /app/data inside the container.


7. Docker Plugins & Add-ons

Plugins extend Docker’s capabilities beyond its core features.

Plugin TypeExample Use Case
Storage PluginsConnect to external storage like AWS EBS, NFS, etc.
Network PluginsEnable custom networks using tools like Weave or Calico.
Authorization PluginsEnforce access control policies.
Logging PluginsSend logs to external systems like Fluentd or Datadog.

Plugins are usually managed via the Docker CLI or API and can be installed dynamically.


8. Summary of Docker Objects

ObjectFunction
DockerfileBlueprint for building an image.
ImageImmutable, read-only template built from a Dockerfile.
ContainerRunning instance of an image with a writable layer.
NetworkIsolates and manages container communication.
Volume / MountPersists data beyond container lifecycle.
PluginExtends Docker functionality (storage, logging, networking, etc.).

9. Best Practices


Docker Architecture: A Comprehensive Overview


1. Docker Architecture Overview

Docker follows a client-server architecture, enabling developers to build, run, and manage containers across various environments.

Core Components of Docker Architecture

ComponentDescription
Docker ClientInterface used by users or applications (CLI, REST API) to send commands to the Docker daemon.
Docker Host (Server)Contains the Docker Daemon (dockerd), which processes client requests and manages containers, images, networks, and storage.
Docker RegistryCentralized service where container images are stored and distributed (e.g., Docker Hub, private registries).

2. Docker Client

The Docker Client is the primary interface for interacting with Docker.

Key Features

🛠 Example CLI Command:

docker run hello-world

3. Docker Host (Server)

The Docker Host is where containers actually run. It runs the Docker Daemon (dockerd).

Main Responsibilities of Docker Daemon

Key Technologies Used by Docker Daemon

TechnologyPurpose
NamespacesProvides isolation for processes, networking, mounts, etc.
Control Groups (cgroups)Limits and monitors resource usage (CPU, memory, disk I/O).
Union File Systems (UnionFS)Enables layered image builds and copy-on-write functionality.
Storage DriversManages how layers are stacked and stored (e.g., overlay2, aufs).

4. Docker Registry

A registry is a centralized location where Docker images are stored and shared.

Types of Registries

TypeDescription
Public RegistryE.g., Docker Hub, accessible to everyone.
Private RegistrySecured registry hosted internally or by third-party cloud providers (e.g., AWS ECR, Azure ACR, IBM Cloud Container Registry).

Image Lifecycle in the Registry

  1. Build: Developer creates an image using docker build.
  2. Tag: Assign a name and version using docker tag.
  3. Push: Upload image to registry using docker push.
  4. Pull: Retrieve image from registry using docker pull.

📦 Example:

docker build -t my-app:v1 .
docker tag my-app:v1 registry.example.com/myteam/my-app:v1
docker push registry.example.com/myteam/my-app:v1

5. Containerization Process Flow

Here’s a step-by-step breakdown of how Docker builds and runs a container:

Step 1: Build Image

Step 2: Tag & Push Image

Step 3: Pull Image on Target Machine

Step 4: Run Container

Visual Workflow

[Developer Machine]
     ↓ (docker build)
[Docker Image Created]
     ↓ (docker push)
[Registry - Store Image]
     ↓ (docker pull)
[Production / Deployment Machine]
     ↓ (docker run)
[Running Container]

6. Communication Between Docker Components

Client ↔ Daemon

Daemon ↔ Registry

Daemon ↔ Daemon (Swarm Mode)


7. Docker Object Management

The Docker host manages several types of objects:

ObjectDescription
ImagesTemplates used to create containers.
ContainersRunning instances of images.
NetworksVirtual networks for container communication.
VolumesPersistent storage for data.
PluginsExtend Docker’s capabilities (networking, logging, storage).

8. Summary Table

ComponentFunction
Docker ClientInterface for sending commands (CLI or API).
Docker Daemon (dockerd)Processes commands and manages containers.
Docker RegistryStores and distributes container images.
Containerization ProcessBuild → Tag → Push → Pull → Run
Underlying TechNamespaces, cgroups, UnionFS, Storage Drivers
NetworkingSupports bridge, host, overlay, none
Persistent StorageVolumes, bind mounts, tmpfs mounts
ExtensibilityPlugins for storage, logging, networking

9. Best Practices


Review of Docker Concepts and Understanding a Dockerfile


📚 Overview

Docker is a powerful platform that enables developers to build, ship, and run applications using containers — lightweight, isolated, and portable environments.

This guide will walk you through essential Docker concepts and how to understand and write a Dockerfile, the blueprint for building Docker images.


🧱 Key Docker Concepts

TermDescription
DockerfileA text file containing instructions to build a Docker image.
ImageA read-only template used to create containers. Built from a Dockerfile.
ContainerA running instance of an image. Isolated and lightweight.
RegistryA storage system for Docker images (e.g., Docker Hub, AWS ECR).
Local MachineWhere you build and test your Docker images before pushing to a registry.
Volume / Bind MountUsed to persist data beyond the container’s lifecycle.

🛠️ Understanding a Dockerfile

A Dockerfile defines how to assemble a Docker image. Each instruction in a Dockerfile creates a new layer in the image.

Sample Dockerfile (Node.js App)

# Use the official Node.js image as the base image
FROM node:14

# Set environment variables
ENV NODE_ENV=production
ENV PORT=3000

# Set the working directory
WORKDIR /app

# Copy package.json and package-lock.json files
COPY package*.json ./

# Install dependencies
RUN npm install --production

# Copy the rest of the application code
COPY . .

# Add additional file
ADD public/index.html /app/public/index.html

# Expose the port on which the application will run
EXPOSE $PORT

# Specify the default command to run when the container starts
CMD ["node", "app.js"]

# Labeling the image
LABEL version="1.0"
LABEL description="Node.js application Docker image"
LABEL maintainer="Your Name"

# Healthcheck to ensure the container is running correctly
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 CMD curl -fs http://localhost:$PORT || exit 1

# Set a non-root user for security purposes
USER node

📋 Breakdown of Dockerfile Instructions

InstructionPurposeExample
FROMSets the base image. Must be the first line.FROM node:14
ENVSets environment variables inside the container.ENV PORT=3000
WORKDIRSets the working directory for subsequent commands.WORKDIR /app
COPYCopies files from host to image.COPY package*.json ./
RUNExecutes commands during image build.RUN npm install --production
ADDSimilar to COPY but supports URLs and archive extraction.ADD public/index.html /app/
EXPOSEDocuments which ports the container listens on.EXPOSE $PORT
CMDDefault command executed when container runs. Only one takes effect.CMD ["node", "app.js"]
LABELAdds metadata like version or maintainer info.LABEL maintainer="John Doe"
HEALTHCHECKChecks if the container is healthy at runtime.HEALTHCHECK CMD curl ...
USERSwitches to a non-root user for security.USER node

🔁 Docker Build & Run Process Flow

  1. Write Dockerfile: Define all steps needed to build the image.
  2. Build Image:
    docker build -t my-node-app:1.0 .
  3. Tag Image: Optionally tag it for a specific registry.
    docker tag my-node-app:1.0 registry.example.com/myteam/my-node-app:1.0
  4. Push to Registry: Share with others or deploy elsewhere.
    docker push registry.example.com/myteam/my-node-app:1.0
  5. Pull Image: On another machine/environment.
    docker pull registry.example.com/myteam/my-node-app:1.0
  6. Run Container:
    docker run -p 3000:3000 registry.example.com/myteam/my-node-app:1.0

🛡️ Best Practices for Writing Dockerfiles


📦 Summary

ConceptDescription
DockerfileBlueprint for building Docker images.
ImageRead-only snapshot built from Dockerfile.
ContainerRunning instance of an image.
RegistryCentralized location to store and share images.
Docker Commandsbuild, run, push, pull, images, ps, etc.
SecurityAlways use a non-root user and keep images minimal.
ExtensibilityUse labels, health checks, and plugins to enhance functionality.

Hands On Lab: Pull, Build and Push the image to Docker Hub


🧾 Summary: Understanding the Benefits of Containers

✅ What is a Container?

Containers allow applications to run reliably across different computing environments.


🔧 Key Features & Benefits of Containers

FeatureBenefit
IsolationEach container runs independently. Processes inside one don’t interfere with others.
PortabilityRun the same container on your laptop, testing server, or production cloud.
LightweightUses fewer resources than virtual machines (shares OS kernel).
Fast StartupStarts in seconds, ideal for dynamic scaling.
Consistency”It works on my machine” problem is eliminated.

🚀 Why Use Containers?


🐳 About Docker

Docker Architecture Overview:


⚠️ When Not to Use Docker


💾 Data Management in Docker


🔌 Networking in Docker


🧩 Extensibility with Plugins


📌 Quick Recap Table

TopicKey Points
What is a container?Lightweight, portable, self-contained environment
Why use containers?Speed, consistency, scalability, cost savings
Docker componentsClient, Host (daemon, images, containers), Registry
Container vs VMContainers share OS; VMs emulate hardware
Data persistenceVolumes, bind mounts
NetworkingIsolated by default; customizable
Best use casesMicroservices, CI/CD, cloud-native apps
Not suitable forMonolithic apps, high-performance/security needs

🐳 Docker CLI Cheat Sheet

🛠️ Image Management

CommandDescription
docker build .Builds an image from the Dockerfile in current directory
docker build -t <name>:<tag> .Builds and tags the image (e.g., myapp:latest)
docker imagesLists all local Docker images
docker rmi <image>Removes one or more images
docker pull <image>Pulls an image from a registry (like Docker Hub)
docker push <image>Pushes an image to a registry
docker tag <source> <target>Tags an image (e.g., before pushing to Docker Hub)

▶️ Container Management

CommandDescription
docker run <image>Runs a new container from an image
docker run -d <image>Runs container in detached mode (background)
docker run -p <host-port>:<container-port> <image>Maps port from host to container
docker psLists running containers
docker ps -aLists all containers (including stopped ones)
docker stop <container>Stops a running container
docker stop $(docker ps -q)Stops all running containers
docker rm <container>Removes one or more stopped containers
docker rm $(docker ps -aq)Removes all containers (stopped or exited)
docker logs <container>Shows logs of a container

🔍 General Info & Troubleshooting

CommandDescription
docker --versionShows Docker CLI version
docker infoDisplays system-wide information about Docker
docker inspect <container/image>Shows detailed configuration of a container or image
docker exec -it <container> shOpens a shell inside a running container
curl localhost:<port>Tests a locally running web service
lsLists files in current directory
exitExits a container shell session

💡 Bonus: IBM Cloud Container Registry Commands

Make sure you’re logged in with ibmcloud login first.

CommandDescription
ibmcloud cr loginLogs Docker CLI into IBM Cloud Container Registry
ibmcloud cr imagesLists images in your IBM Cloud registry
ibmcloud cr namespacesViews available namespaces
ibmcloud cr region-set <region>Sets the region for image operations
ibmcloud targetShows current IBM Cloud account/target info
ibmcloud versionShows IBM Cloud CLI version

🧠 Environment Variables

CommandDescription
export MY_NAMESPACE=my-namespaceSets an environment variable for use in tagging images

📦 Git Integration

CommandDescription
git clone <url>Clones a Git repository containing Docker artifacts

✅ Quick Tip: Clean Up Unused Resources

# Stop and remove all containers
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)

# Remove all unused images, networks, and build caches
docker system prune -a

📘 Glossary: Container Basics

TermDefinition
AgileAn iterative approach to project management and software development that helps teams deliver faster and with fewer issues.
Client-server architectureA distributed structure where tasks are divided between clients (requesters) and servers (providers).
ContainerA standard unit of software that encapsulates application code, runtime, tools, libraries, and settings. Built using a container engine like Docker.
Container RegistryA service used to store and distribute container images. Basic functions include storing and retrieving images.
CI/CD pipelinesAutomated processes that help developers build, test, and deploy applications quickly and reliably. Stands for Continuous Integration / Continuous Deployment.
Cloud NativeApplications designed specifically to run in cloud environments, taking full advantage of scalability, resilience, and automation.
Daemon-lessA type of container runtime that does not rely on a background process (daemon) to manage containers or images.
DevOpsA set of practices, tools, and cultural philosophies that automate and integrate processes between software development and IT operations.
DockerAn open platform for developing, shipping, and running applications in containers.
DockerfileA text file containing instructions to build a Docker image automatically.
Docker ClientThe primary interface through which users interact with Docker via CLI commands like docker run.
Docker CLI (Command Line Interface)Tool used to send commands like build, run, stop to a Docker daemon.
Docker Daemon (dockerd)Background process that manages Docker objects like images, containers, networks, and volumes.
Docker HubA public registry where developers can find, share, and manage container images.
Docker LocalhostRefers to a container sharing the host’s network stack, so localhost inside the container refers to the host machine.
Docker Remote HostA remote machine running Docker Engine that can be accessed via its exposed API port.
Docker NetworksUsed to isolate and manage communication between containers.
Docker PluginsExtend Docker functionality — e.g., storage plugins connect to external platforms like AWS or Azure.
Docker StorageUses volumes and bind mounts to persist data beyond the life of a container.
LXC (LinuX Containers)An OS-level virtualization method allowing multiple isolated Linux environments on one host. Predecessor to modern container engines.
IBM Cloud Container RegistryA fully managed private registry for securely storing and distributing Docker images in IBM Cloud.
ImageA read-only template used to create containers. Contains source code, libraries, and dependencies.
ImmutabilityOnce created, images cannot be changed — any change creates a new image.
MicroservicesArchitectural style where applications are made up of small, loosely coupled services that can be developed and deployed independently.
NamespaceA Linux kernel feature that isolates system resources like networking, processes, and filesystems. Used by Docker for container isolation.
Operating System VirtualizationKernel-level virtualization that allows multiple isolated user-space instances (like containers) on one host.
Private RegistryA secure registry that restricts access to authorized users only.
REST APIAn API that follows REST principles and allows interaction with web services — used by Docker to communicate with registries and daemons.
RegistryA hosted service containing repositories of Docker images. Responds to the Docker Registry API.
RepositoryA collection of Docker images, often versioned using tags. Can be pushed to or pulled from a registry.
Server VirtualizationProcess of dividing a physical server into multiple virtual servers that run independently.
ServerlessA cloud-native model where developers write and deploy code without managing infrastructure like servers.
TagA label applied to an image to distinguish versions (e.g., myapp:latest, myapp:v1).

📌 Summary Table

CategoryKey Terms
Development & MethodologyAgile, DevOps, CI/CD Pipelines, Cloud Native
ArchitectureClient-server, Microservices, Serverless
Container PlatformsDocker, LXC, Daemon-less Runtimes
Docker ComponentsDockerfile, Docker Client, Docker Daemon, Docker CLI
Networking & StorageDocker Networks, Docker Storage, Volumes, Bind Mounts
Image ManagementImage, Repository, Tag, Immutability
RegistriesDocker Hub, Private Registry, IBM Cloud Container Registry
Security & IsolationNamespace, Plugin Architecture


Suggest Changes

Previous Post
Linux Command Line and Shell Scripting Cheat Sheet for Beginners and Practitioner
Next Post
Pull, Build an image using a Dockerfile and Push the image to Docker Hub.