Friday, July 25, 2025

Docker Containerization | Overview.

Docker Containerization  - Overview. 

Scope:

  • Intro,
  • Concept of Docker Containerization,
  • Key Features of Docker,
  • Architecture,
  • Benefits of Docker,
  • Limitations of Docker,
  • Useful Docker Commands (Basic Commands),
  • Docker Image & Container Management commands,
  • Common Use Cases of Docker,
  • Summary Table,
  • Insights,
  • Dockerfile Sample, 
  • Explanation of Each Line of Dockerfile,
  • Dockerfile command.

Intro:

  • Here's twtech overview of Docker containerization.
  • The write-up including the concept, features, benefits, limitations, useful commands, and common use cases.

 Concept of Docker Containerization

  • Docker is an open-source platform designed to automate the deployment, scaling, and management of applications using containers.
  • A container is a lightweight, standalone, and executable software package that includes everything needed to run a piece of software like:
    • Code,
    • Runtime, 
    • Libraries, 
    • System tools.
  • Docker enables developers to package applications into containers, which ensures that software runs reliably across different computing environments.

 Key Features of Docker

  1. Lightweight: Containers share the host OS kernel, reducing overhead compared to virtual machines (VMs).
  2. Portable: Run consistently across environments (dev, staging, production).
  3. Isolated: Each container runs in its own isolated environment.
  4. Layered Architecture: Uses a layered filesystem, improving image build and storage efficiency.
  5. Version Control: Docker images can be versioned and rolled back.
  6. Declarative Configuration: Infrastructure as code via Dockerfiles.
  7. Rapid Deployment: Start containers in seconds.
Architecture

Benefits of Docker

  1. Consistency: "It works on my machine" issues are greatly reduced.
  2. Scalability: Easily scale applications across multiple environments.
  3. CI/CD Integration: Streamlines automated testing and deployment.
  4. Resource Efficiency: Uses fewer resources than traditional VMs.
  5. Modularity: Applications can be broken into smaller services (microservices).
  6.  Speed: Faster boot time and lower overhead.

 Limitations of Docker

  1. Not a Full VM: Some applications may require full OS support.
  2. Security: Containers share the host OS kernel, increasing attack surface.
  3. Persistent Data: Handling data persistence can be complex.
  4. Networking: Container networking can be complex in multi-host setups.
  5. GUI Apps: Not ideal for running GUI-based applications.
  6. Platform Dependent: Best supported on Linux; limited features on Windows/macOS.

 Useful Docker Commands (Basic Commands):

# bash

docker --version                            # Show Docker version

docker info                                    # Display Docker system info

docker pull <image>                     # Download image from Docker Hub

docker run <image>                      # Run a container

docker ps                                       # List running containers

docker ps -a                                   # List all containers

docker stop <container_id>         # Stop a running container

docker start <container_id>         # Start a stopped container

docker rm <container_id>            # Remove a container

docker rmi <image_id>                 # Remove an image

 Docker Image & Container Management commands:

# bash

docker build -t <name> .             # Build image from Dockerfile

docker exec -it <container_id> bash.  # Access container shell

docker logs <container_id>           # View container logs

Common Use Cases of Docker

  1. Development Environments
    • Easily replicate development environments across teams.
  2. Microservices Architecture
    • Break monoliths into loosely coupled services running in separate containers.
  3. Continuous Integration/Delivery (CI/CD)
    • Build, test, and deploy applications in isolated containers.
  4. Cloud & Hybrid Deployments
    • Easily deploy containerized applications to AWS, Azure, GCP, etc.
  5. Testing & Debugging
    • Test different versions of software or dependencies quickly.
  6. Legacy App Modernization
    • Encapsulate legacy applications for cloud migration.

 Summary Table

Aspect

Details

Concept.

Lightweight container-based virtualization

Features.

Portability, isolation, speed, versioning

Benefits.

Efficiency, consistency, scalability

Limitations.

Limited GUI support, persistent storage complexity, security concerns

Useful Commands.

docker run, docker build, docker ps, docker exec, etc.

Use Cases.

DevOps, microservices, CI/CD, testing, cloud deployment

twtech-Insights:

  • A Dockerfile example
  • A visual diagram of Docker architecture

A Dockerfile example and explanation.

Here's twtech simple Dockerfile along with a line-by-line explanation.

 Sample Dockerfile

Let’s say twtech  has a basic Python Flask app. twtechapp.py might look like this:

# python
# app.py
from flask import Flask
app = Flask(twtechapp)
@app.route('/')
def hello():
    return "Hello from twtech Team via Docker"

Here’s twtech Sample Dockerfile to containerize this Flask app:

# Dockerfile
# 1. Use an official Python runtime as a parent image
FROM python:3.10-slim 
# 2. Set the working directory in the container
WORKDIR /app
# 3. Copy the current directory contents into the container at /app
COPY . /app
# 4. Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# 5. Make port 5000 available to the world outside this container
EXPOSE 5000
# 6. Define environment variable
ENV FLASK_APP=app.py
# 7. Run app.py when the container launches
CMD ["flask", "run", "--host=0.0.0.0"]

 Explanation of Each Line of Dockerfile

Line

Description

FROM python:3.10-slim

Base image with Python 3.10 (slim version is lightweight)

WORKDIR /app

Sets the working directory inside the container to /app

COPY . /app

Copies the contents of the local project directory into the container

RUN pip install --no-cache-dir -r requirements.txt

Installs dependencies listed in requirements.txt

EXPOSE 5000

Opens port 5000 so Flask can be accessed from outside the container

ENV FLASK_APP=app.py

Sets an environment variable to tell Flask what app to run

CMD ["flask", "run", "--host=0.0.0.0"]

Starts the Flask app when the container is run

 Requirements.txt (sample)

  • twtech needs this file in the same directory:

# txt
 flask

Dockerfile command

# bash
# Step 1: Build the Docker image
docker build -t flask-app .
# Step 2: Run the Docker container
docker run -p 5000:5000 flask-app

Then visit http://host_pubIP:5000 in twtech browser, and should see:



No comments:

Post a Comment

Amazon EventBridge | Overview.

Amazon EventBridge - Overview. Scope: Intro, Core Concepts, Key Benefits, Link to official documentation, Insights. Intro: Amazon EventBridg...