Kubernetes Overview · Part 0505

Docker InstallationmacOS, Windows ও Linux

শুরু থেকে real container run করা পর্যন্ত: macOS, Windows এবং Linux-এ Docker install, installation verify এবং Nginx ও Docker Compose দিয়ে test করার step-by-step guide।

Docker installation paths: Docker Desktop on macOS and Windows with WSL 2, Docker Engine on Linux, then a hello-world and Nginx container test
FIG. 05 macOS ও Windows-এ Docker Desktop, Linux-এ Docker Engine; শেষে একটি real container দিয়ে verify।

এই Tutorial-এ আমরা শিখব কীভাবে macOS, Windows এবং Linux-এ Docker install করতে হয়, installation ঠিকভাবে হয়েছে কি না verify করতে হয় এবং একটি real container run করে Docker-এর functionality পরীক্ষা করতে হয়।

Docker install করার আগে একটি বিষয় বুঝে নেওয়া দরকার। সব Operating System-এ Docker installation process এক নয়।

সাধারণত আমরা দুটি installation approach ব্যবহার করি:

macOS / Windows
       ↓
Docker Desktop
       ↓
Docker Engine
       ↓
Containers

Linux Server
       ↓
Docker Engine
       ↓
containerd
       ↓
Containers

Docker Desktop কী?

Docker Desktop হলো একটি desktop application, যা মূলত macOS এবং Windows-এ Docker ব্যবহার সহজ করে। এর মধ্যে Docker Engine, Docker CLI, Docker Compose এবং একটি Graphical User Interface (GUI) থাকে।

Docker Engine কী?

Docker Engine হলো Docker-এর মূল container management technology। এটি container create, start, stop এবং manage করতে সাহায্য করে। Linux server এবং production environment-এ সাধারণত Docker Engine সরাসরি install করা হয়।

Docker Compose কী?

Docker Compose ব্যবহার করে আমরা একটি YAML configuration file-এর মাধ্যমে এক বা একাধিক container manage করতে পারি।

উদাহরণস্বরূপ, একটি application-এর Backend, Database এবং Redis Cache একসঙ্গে চালানোর জন্য Docker Compose ব্যবহার করা যায়।

1. macOS-এ Docker Installation

macOS-এ Docker install করার সবচেয়ে সহজ উপায় হলো Docker Desktop ব্যবহার করা।

Step 1: Mac-এর Processor Architecture Check করা

প্রথমে Terminal open করে নিচের command run করো:

uname -m

Possible output:

arm64   → Apple Silicon (M1, M2, M3, M4 ইত্যাদি)

x86_64  → Intel Mac

কেন এটি check করছি?

কারণ Docker Desktop-এর Apple Silicon এবং Intel Mac-এর জন্য আলাদা installer রয়েছে।

সঠিক installer download না করলে installation বা compatibility problem হতে পারে।

Step 2: Docker Desktop Download করা

Docker-এর official website থেকে installer download করো:

https://docs.docker.com/desktop/setup/install/mac-install/

Processor অনুযায়ী installer select করতে হবে।

Apple Silicon Mac → Apple Silicon Version

Intel Mac         → Intel Version

Step 3: Docker Desktop Install করা

Download করা .dmg file open করো।

এরপর:

Docker.dmg
     ↓
Docker.app
     ↓
Applications Folder
     ↓
Open Docker Desktop

প্রথমবার Docker Desktop চালু করার সময় macOS কিছু system permission চাইতে পারে।

প্রয়োজনীয় permission approve করতে হবে।

Docker Desktop পুরোপুরি start হলে menu bar-এ Docker-এর icon দেখতে পাবে।

Step 4: Docker Installation Verify করা

Terminal open করে নিচের commands run করো:

docker --version

docker compose version

docker run hello-world

Installation ঠিকভাবে হয়ে থাকলে output-এ দেখতে পাবে:

Hello from Docker!

এখানে আসলে কী হলো?

docker run hello-world command execute করলে Docker প্রথমে local system-এ hello-world image আছে কি না check করে।

Image না থাকলে Docker Hub থেকে download করে।

তারপর সেই image ব্যবহার করে একটি container create এবং run করে।

Container successfully execute হলে আমরা Hello from Docker! message দেখতে পাই।

অর্থাৎ Docker Engine ঠিকভাবে কাজ করছে।

Step 5: একটি Real Nginx Container Run করা

এবার আমরা একটি actual web server container run করব।

docker run -d --name test-nginx -p 8080:80 nginx

এই command-এর প্রতিটি অংশ বুঝে নিই:

Parameterকাজ
docker runনতুন container create এবং run করে
-dContainer background-এ run করে
--name test-nginxContainer-এর একটি name দেয়
-p 8080:80Host-এর port 8080 কে container-এর port 80-এর সঙ্গে connect করে
nginxNginx Docker image ব্যবহার করে

এখন Browser open করে নিচের address-এ যাও:

http://localhost:8080

সবকিছু ঠিক থাকলে Welcome to nginx! page দেখতে পাবে।

এর অর্থ হলো Docker container-এর ভেতরে একটি real web server চলছে।

Container Stop এবং Remove করা

Test শেষ হলে:

docker stop test-nginx

docker rm test-nginx

প্রথম command container stop করবে এবং দ্বিতীয় command container remove করবে।

এভাবেই macOS-এ Docker installation এবং basic container execution verify করা হলো।

2. Windows-এ Docker Installation

Windows-এ Docker installation কিছুটা আলাদা।

কারণ Docker-এর Linux containers run করার জন্য Windows-এ সাধারণত WSL 2 ব্যবহার করা হয়।

WSL-এর পূর্ণরূপ: Windows Subsystem for Linux।

WSL-এর মাধ্যমে Windows-এর মধ্যে একটি Linux environment run করা যায়।

আমাদের installation architecture হবে:

Windows 10 / Windows 11
             ↓
            WSL 2
             ↓
       Docker Desktop
             ↓
        Docker Engine
             ↓
       Linux Containers

Step 1: Windows Requirements Check করা

Docker Desktop install করার আগে নিশ্চিত হতে হবে:

  • Windows 10 বা Windows 11-এর supported version ব্যবহার করা হচ্ছে।
  • System-এ virtualization support রয়েছে এবং সেটি enabled।
  • WSL 2 install করার সুবিধা রয়েছে।
  • Docker Desktop-এর minimum hardware requirements পূরণ হচ্ছে।

Official requirements:

https://docs.docker.com/desktop/setup/install/windows-install/

Step 2: WSL 2 Install করা

Windows-এর Start Menu থেকে PowerShell search করো।

তারপর Run as Administrator select করো।

নিচের command execute করো:

wsl --install

এই command WSL-এর প্রয়োজনীয় components install করবে এবং সাধারণত একটি default Linux distribution install করবে।

Windows restart করতে বললে restart করতে হবে।

WSL Update করা

wsl --update

WSL Status Check করা

wsl --status

Installed Linux Distributions Check করা

wsl -l -v

Example output:

NAME       STATE      VERSION

Ubuntu     Running    2

এখানে VERSION 2 মানে Ubuntu WSL 2 ব্যবহার করছে।

যদি কোনো distribution WSL 1 ব্যবহার করে, তাহলে প্রয়োজন অনুযায়ী WSL 2-তে convert করতে হবে।

Example:

wsl --set-version Ubuntu 2

Step 3: Docker Desktop Install করা

Official Docker website থেকে Windows installer download করো:

https://docs.docker.com/desktop/setup/install/windows-install/

Installer run করার সময় WSL 2 backend select করার option থাকলে সেটি enable করো।

Installation workflow:

Download Docker Desktop
           ↓
Run Installer
           ↓
Enable WSL 2 Backend
           ↓
Complete Installation
           ↓
Launch Docker Desktop

Docker Desktop start করার পর নিশ্চিত হও Linux containers mode enabled আছে।

Step 4: WSL Integration Enable করা

Docker Desktop open করো।

তারপর:

Docker Desktop
      ↓
Settings
      ↓
Resources
      ↓
WSL Integration
      ↓
Enable Ubuntu / Debian
      ↓
Apply & Restart

WSL Integration কেন গুরুত্বপূর্ণ?

ধরো তুমি Windows-এর Ubuntu terminal থেকে Docker command run করতে চাও।

WSL Integration enabled থাকলে Ubuntu terminal সরাসরি Docker Desktop-এর Docker Engine ব্যবহার করতে পারবে।

এতে Windows এবং Linux development environment-এর মধ্যে integration সহজ হয়।

Step 5: PowerShell থেকে Docker Verify করা

PowerShell open করে:

docker --version

docker compose version

docker run hello-world

Expected output:

Hello from Docker!

Step 6: WSL Ubuntu থেকে Docker Verify করা

এবার Ubuntu terminal open করো।

docker --version

docker compose version

docker run hello-world

এখানেও Hello from Docker! দেখতে পেলে বুঝবে WSL Integration ঠিকভাবে কাজ করছে।

Important: Docker Desktop ব্যবহার করলে সাধারণত WSL Ubuntu-এর মধ্যে আলাদা করে Docker Engine install করার দরকার নেই।

Step 7: Real Nginx Container Run করা

PowerShell অথবা WSL Ubuntu terminal থেকে:

docker run -d --name test-nginx -p 8080:80 nginx

Browser-এ যাও:

http://localhost:8080

Nginx welcome page দেখতে পেলে container successfully run করছে।

Cleanup

docker stop test-nginx

docker rm test-nginx

এখন Windows-এ Docker Desktop, Docker Engine, WSL Integration এবং Container Execution — সবকিছু test করা হয়ে গেল।

3. Linux Docker Installation — Ubuntu / Debian

Linux Server-এ Docker install করার জন্য সাধারণত Docker Engine ব্যবহার করা হয়।

বিশেষ করে Server, Virtual Machine (VM), Cloud Infrastructure এবং On-Premises Environment-এ এটি প্রচলিত।

এখানে আমরা Docker Desktop-এর পরিবর্তে সরাসরি Docker Engine install করব।

Step 1: পুরোনো বা Conflicting Docker Packages Remove করা

Docker-এর official packages install করার আগে conflicting packages remove করতে হতে পারে।

sudo apt remove \
  docker.io \
  docker-doc \
  docker-compose \
  docker-compose-v2 \
  podman-docker \
  containerd \
  runc

কেন remove করছি?

Ubuntu বা Debian-এর default repository-তে Docker-related কিছু packages থাকতে পারে।

এগুলো Docker-এর official repository থেকে install করা packages-এর সঙ্গে conflict করতে পারে।

তবে existing production server-এ এই command execute করার আগে নিশ্চিত হতে হবে কোনো running application পুরোনো Docker বা containerd installation-এর ওপর depend করছে কি না।

Step 2: Required Dependencies Install করা

প্রথমে package list update করো:

sudo apt update

তারপর:

sudo apt install -y ca-certificates curl

এখানে:

Packageকাজ
ca-certificatesHTTPS connection-এর certificate validation
curlInternet থেকে files download করা

Step 3: Docker-এর Official GPG Key Add করা

Docker-এর package repository verify করার জন্য official GPG key add করতে হবে।

Ubuntu-এর জন্য:

sudo install -m 0755 -d /etc/apt/keyrings

sudo curl -fsSL \
  https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

Debian-এর জন্য:

একই process follow করো, তবে GPG key URL হবে:

https://download.docker.com/linux/debian/gpg

GPG Key কেন ব্যবহার করি?

GPG key-এর মাধ্যমে package manager verify করতে পারে যে Docker packages trusted source থেকে এসেছে এবং repository metadata-এর signature valid।

Step 4: Docker Official Repository Add করা

এবার Operating System-কে জানাতে হবে Docker packages কোথায় পাওয়া যাবে।

Ubuntu Repository

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Debian Repository

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

এখন Docker-এর official repository configure হয়ে গেল।

Step 5: Docker Engine Install করা

প্রথমে package list update করো:

sudo apt update

তারপর Docker Engine এবং related tools install করো:

sudo apt install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

এই command কয়েকটি গুরুত্বপূর্ণ Docker components install করবে।

PackageDescription
docker-ceDocker Community Edition Engine
docker-ce-cliDocker Command Line Interface
containerd.ioContainer Runtime
docker-buildx-pluginAdvanced Docker Image Building
docker-compose-pluginMulti-Container Application Management

Step 6: Docker Service Start করা

Docker install হওয়ার পর service start করতে হবে।

sudo systemctl enable --now docker

Service status check করো:

sudo systemctl status docker

Expected result:

Active: active (running)

Command-এর meaning:

enable Docker service-কে system boot-এর সময় automatically start হওয়ার জন্য configure করে।

--now service-কে immediately start করে।

Step 7: Docker Installation Verify করা

এখন run করো:

sudo docker --version

sudo docker compose version

sudo docker run hello-world

Expected:

Hello from Docker!

এটি confirm করে Docker container successfully execute করতে পারছে।

Step 8: Sudo ছাড়া Docker Use করা (Optional)

Linux-এ Docker command execute করার জন্য সাধারণত root privileges অথবা Docker socket-এর permission প্রয়োজন হয়।

Development environment-এ যদি বারবার sudo ব্যবহার করতে না চাও, তাহলে user-কে Docker group-এ add করতে পারো।

sudo usermod -aG docker "$USER"

তারপর:

newgrp docker

Test:

docker run hello-world

Security Warning:

Docker group-এর user কার্যত root-level privileges পেতে পারে। তাই production server-এ এই permission শুধুমাত্র trusted administrators-কে দেওয়া উচিত।

আরও restricted environment-এর জন্য Rootless Docker বিবেচনা করা যায়।

Step 9: Real Nginx Container Test করা

এবার একটি Nginx web server চালাই:

docker run -d --name test-nginx -p 8080:80 nginx

Container status:

docker ps

HTTP request পাঠাও:

curl http://localhost:8080

Expected result হলো Nginx-এর HTML response।

এর মানে container-এর ভেতরের Nginx web server ঠিকভাবে কাজ করছে।

Container Cleanup

docker stop test-nginx

docker rm test-nginx

Note: Remote Linux server হলে localhost বলতে সেই server-কে বোঝায়। নিজের computer-এর browser থেকে access করতে হলে Server IP, Network Route এবং Firewall configuration বিবেচনা করতে হবে।

4. Fedora Linux-এ Docker Installation

Fedora Linux-এ package management-এর জন্য dnf ব্যবহার করা হয়।

তাই Ubuntu-এর apt command এখানে কাজ করবে না।

Step 1: পুরোনো Docker Packages Remove করা

sudo dnf remove \
  docker \
  docker-client \
  docker-client-latest \
  docker-common \
  docker-latest \
  docker-latest-logrotate \
  docker-logrotate \
  docker-selinux \
  docker-engine-selinux \
  docker-engine

Step 2: DNF Plugins Install করা

sudo dnf -y install dnf-plugins-core

Step 3: Docker Repository Add করা

নতুন DNF5-based Fedora-তে:

sudo dnf config-manager addrepo \
  --from-repofile \
  https://download.docker.com/linux/fedora/docker-ce.repo

পুরোনো DNF4-based Fedora-তে:

sudo dnf config-manager --add-repo \
  https://download.docker.com/linux/fedora/docker-ce.repo

Step 4: Docker Engine Install করা

sudo dnf install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

Step 5: Docker Service Start করা

sudo systemctl enable --now docker

Step 6: Docker Verify করা

sudo docker run hello-world

Expected:

Hello from Docker!

এখন Fedora-তে Docker-এর basic installation complete।

5. RHEL / CentOS / Rocky / AlmaLinux-এ Docker Installation

RHEL-based Linux distributions-এর installation process অনেকটাই Fedora-এর মতো।

তবে distribution অনুযায়ী correct Docker repository select করতে হবে।

Step 1: DNF Plugins Install করা

sudo dnf install -y dnf-plugins-core

Step 2: Docker Repository Add করা

CentOS

sudo dnf config-manager --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo

RHEL

sudo dnf config-manager --add-repo \
  https://download.docker.com/linux/rhel/docker-ce.repo

DNF5-based system হলে config-manager addrepo --from-repofile syntax ব্যবহার করতে হতে পারে।

Rocky Linux এবং AlmaLinux: এই distributions-এ compatible Docker repository ব্যবহার করার আগে OS version এবং Docker package support verify করা জরুরি।

Step 3: Docker Engine Install করা

sudo dnf install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

Step 4: Docker Service Start করা

sudo systemctl enable --now docker

Step 5: Installation Verify করা

sudo docker run hello-world

Expected:

Hello from Docker!

এখন Docker Engine properly configured কি না basic level-এ confirm করা গেল।

6. Docker Post-Installation Verification

Docker install করার পর কিছু standard verification commands run করা উচিত।

এগুলো আমাদের নিশ্চিত করতে সাহায্য করে Docker CLI, Docker Engine এবং Docker Compose সঠিকভাবে কাজ করছে।

docker --version

docker compose version

docker info

docker run --rm hello-world

কোন Command কী Verify করে?

CommandVerification
docker --versionDocker CLI installed আছে কি না
docker compose versionDocker Compose available কি না
docker infoDocker Engine-এর সঙ্গে connection হচ্ছে কি না
docker run --rm hello-worldContainer execute করা যাচ্ছে কি না

একটি গুরুত্বপূর্ণ বিষয়:

শুধুমাত্র docker --version successful হলেই Docker Engine running আছে বলা যায় না।

কারণ Docker CLI installed থাকতে পারে, কিন্তু Docker daemon বন্ধ থাকতে পারে।

তাই docker info এবং docker run hello-world দিয়ে verification করা জরুরি।

Real Web Container Verification

একটি Nginx container run করো:

docker run -d --name web-test -p 8080:80 nginx

Running containers দেখো:

docker ps

Browser-এ open করো:

http://localhost:8080

Nginx welcome page দেখতে পেলে container networking এবং HTTP service basic level-এ কাজ করছে।

Test শেষে:

docker stop web-test

docker rm web-test

7. Docker Compose দিয়ে Real Application Test

এখন পর্যন্ত আমরা docker run command ব্যবহার করে একটি করে container চালিয়েছি।

কিন্তু real-world applications সাধারণত একাধিক container নিয়ে তৈরি হয়।

উদাহরণস্বরূপ:

Web Application
      |
      +── Frontend Container
      |
      +── Backend API Container
      |
      +── PostgreSQL Container
      |
      +── Redis Container

এ ধরনের multi-container architecture manage করার জন্য Docker Compose ব্যবহার করা হয়।

আমরা এখানে একটি simple Nginx service দিয়ে Compose test করব।

Step 1: Project Directory Create করা

Terminal-এ:

mkdir docker-test

cd docker-test

Step 2: Compose Configuration File Create করা

Project directory-তে compose.yaml নামে একটি file তৈরি করো।

File-এর content:

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"

এই YAML file-এ আমরা কী define করেছি?

services: এখানে application-এর services define করা হয়।

web: আমাদের service-এর নাম।

image: Container create করার জন্য Nginx image ব্যবহার করা হবে।

ports: Host machine-এর port 8080 container-এর port 80-এর সঙ্গে connect হবে।

Step 3: Docker Compose দিয়ে Container Start করা

docker compose up -d

এই command execute করলে Docker Compose:

  1. Configuration file read করবে।
  2. Required Docker image local-এ আছে কি না check করবে।
  3. Image না থাকলে download করবে।
  4. Network এবং container create করবে।
  5. Container background-এ start করবে।

Step 4: Running Services Check করা

docker compose ps

এখন HTTP request পাঠাও:

curl http://localhost:8080

Windows PowerShell-এ চাইলে ব্যবহার করতে পারো:

curl.exe http://localhost:8080

Browser থেকেও verify করা যাবে:

http://localhost:8080

Step 5: Docker Compose Services Stop করা

docker compose down

এই command Compose project-এর containers এবং default network remove করবে।

আমরা কী শিখলাম?

Docker Compose ব্যবহার করে YAML configuration-এর মাধ্যমে container start, manage এবং stop করতে পারি।

পরবর্তীতে একই approach ব্যবহার করে Backend, PostgreSQL, Redis, Apache Kafka কিংবা AI/ML services deploy করা সম্ভব।

8. Docker, containerd, ctr, nerdctl এবং crictl — পার্থক্য কী?

Docker শেখার সময় একটি common confusion তৈরি হয়।

Docker Engine, containerd, runc, ctr, nerdctl, crictl এবং kubectl — এগুলোর মধ্যে সম্পর্ক কী?

সহজভাবে বোঝার জন্য নিচের architecture দেখো:

Docker CLI
    |
    v

Docker Engine (dockerd)
    |
    v

containerd
    |
    v

runc
    |
    v

Linux Containers

এখন একে একে বুঝি।

Docker CLI

Docker CLI হলো Docker-এর command-line interface।

যেমন:

docker ps
docker images
docker run nginx

এই commands দিয়ে আমরা Docker Engine-এর সঙ্গে communicate করি।

containerd

containerd হলো একটি container runtime, যা container lifecycle manage করার functionality provide করে।

Docker Engine internally containerd ব্যবহার করে।

তবে containerd সরাসরি ব্যবহার করা সম্ভব, Docker CLI ছাড়াও।

ctr — containerd-এর Native CLI

ctr হলো containerd-এর low-level command-line client।

Example:

sudo ctr containers list

এটি containerd-এর default namespace-এর containers দেখায়।

Kubernetes-এর containerd namespace inspect করতে:

sudo ctr -n k8s.io containers list

ctr সাধারণত debugging এবং containerd internals বোঝার জন্য ব্যবহার করা হয়।

nerdctl — Docker-এর মতো CLI for containerd

nerdctl একটি Docker-compatible CLI।

এটি directly containerd-এর সঙ্গে কাজ করে।

যারা Docker commands-এর সঙ্গে familiar, তাদের জন্য nerdctl ব্যবহার করা তুলনামূলক সহজ।

Example:

nerdctl ps
nerdctl images
nerdctl run nginx

তবে nerdctl ব্যবহার করার আগে এটিকে separately install এবং configure করতে হতে পারে।

crictl — Kubernetes Runtime Troubleshooting

crictl হলো Container Runtime Interface (CRI)-এর debugging tool।

Kubernetes node-এ container runtime troubleshoot করার জন্য এটি ব্যবহার করা হয়।

Example:

sudo crictl ps
sudo crictl images
sudo crictl pods

Kubernetes-এর containerd-backed node troubleshoot করার সময় এটি বিশেষভাবে useful।

kubectl — Kubernetes Management CLI

kubectl ব্যবহার করে Kubernetes API Server-এর মাধ্যমে cluster resources manage করা হয়।

Example:

kubectl get pods -A
kubectl get nodes
kubectl get deployments -A

কখন কোন Tool ব্যবহার করব?

ToolPrimary Use Case
dockerDocker containers এবং images manage করা
ctrLow-level containerd debugging
nerdctlDocker-like workflow directly on containerd
crictlKubernetes container runtime troubleshooting
kubectlKubernetes cluster এবং workloads manage করা

মনে রাখবে: Docker install করলেই এই সব CLI automatically install হয়ে যায় না। প্রতিটি tool-এর আলাদা use case এবং installation requirements আছে।

9. Final Docker Validation — Complete Test

এখন আমরা একটি complete validation run করব।

এটি macOS, Windows এবং Linux — সব environment-এ ব্যবহার করা যাবে, যদি Docker Engine running থাকে এবং প্রয়োজনীয় permissions configure করা থাকে।

# Step 1: Docker Client এবং Server Check
docker version

# Step 2: Docker Compose Check
docker compose version

# Step 3: Hello World Container Run
docker run --rm hello-world

# Step 4: Alpine Linux Container Test
docker run --rm alpine uname -a

# Step 5: Nginx Web Server Start
docker run -d --name nginx-test -p 8080:80 nginx

# Step 6: Web Server HTTP Test
curl http://localhost:8080

# Step 7: Container Logs Check
docker logs nginx-test

# Step 8: Running Containers Check
docker ps

# Step 9: Container Stop
docker stop nginx-test

# Step 10: Container Remove
docker rm nginx-test

Expected Success Results

TestExpected Output
Docker VersionClient এবং Server details
Compose VersionDocker Compose v2
Hello WorldHello from Docker!
Alpine ContainerLinux Kernel information
Nginx ContainerContainer successfully started
HTTP RequestNginx HTML response
Container LogsLogs accessible
Docker PSRunning container দেখা যাচ্ছে
CleanupContainer successfully removed

সব tests সফল হলে বলা যায় Docker-এর installation, Engine connectivity, container execution, basic networking এবং Compose functionality কাজ করছে।

তবে মনে রাখতে হবে, Installation Validation এবং Production Readiness এক জিনিস নয়।

Production environment-এর জন্য আরও কিছু বিষয় configuration করতে হবে:

  • Container Security এবং Image Scanning
  • Resource Limits (CPU এবং Memory)
  • Persistent Volumes এবং Storage
  • Logging এবং Monitoring
  • Network Security এবং Firewall
  • Secrets Management
  • Backup এবং Recovery
  • Container Health Checks
  • Image Version Pinning

10. Complete Docker Installation Summary

এখন পুরো installation process একবার সংক্ষেপে দেখি।

                  Operating System
                         |
            +------------+------------+
            |                         |
      macOS / Windows             Linux Server
            |                         |
      Docker Desktop             Docker Engine
            |                         |
            +------------+------------+
                         |
                     Docker CLI
                         |
                  Docker Engine
                         |
                     containerd
                         |
                       runc
                         |
                    Containers
                         |
                +--------+--------+
                |        |        |
              Nginx    Backend  Database

macOS ব্যবহার করলে

Docker Desktop download এবং install করতে হবে। তারপর docker run hello-world এবং Nginx container run করে verification করতে হবে।

Windows ব্যবহার করলে

WSL 2 setup করতে হবে, Docker Desktop install করতে হবে এবং WSL Integration enable করতে হবে। এরপর PowerShell ও Ubuntu terminal থেকে Docker commands test করা যাবে।

Linux Server ব্যবহার করলে

Docker-এর official repository configure করতে হবে, Docker Engine install করতে হবে এবং Docker service enable করতে হবে। তারপর container run করে installation verify করতে হবে।

Multiple Containers Run করতে চাইলে

Docker Compose ব্যবহার করতে হবে। এতে একটি YAML file-এর মাধ্যমে application-এর বিভিন্ন services একসঙ্গে manage করা যায়।

Direct containerd ব্যবহার করতে চাইলে

Low-level operations-এর জন্য ctr এবং Docker-like workflow-এর জন্য nerdctl ব্যবহার করা যায়।

Kubernetes Environment-এ কাজ করলে

Container Runtime troubleshooting-এর জন্য crictl এবং Kubernetes objects manage করার জন্য kubectl ব্যবহার করতে হবে।

Official Documentation & References

আরও বিস্তারিত জানার জন্য Docker এবং containerd-এর official documentation ব্যবহার করতে পারো।

Final Takeaway

Docker installation শেখার মূল বিষয় শুধু software install করা নয়, বরং Docker-এর complete workflow বোঝা।

একজন Developer বা DevOps / AI Engineer হিসেবে তোমার জানা উচিত:

Docker কীভাবে install হয় → Docker Engine কীভাবে কাজ করে → Docker Image থেকে Container কীভাবে তৈরি হয় → Port Mapping কীভাবে কাজ করে → Docker Compose দিয়ে Multiple Services কীভাবে run করতে হয় → Container Runtime এবং Kubernetes-এর সম্পর্ক কী।

এই installation এবং verification process সম্পন্ন করার পর তুমি Docker ব্যবহার করে Web Application, Backend API, Database, Data Engineering Services এবং AI/ML Application containerize করার জন্য প্রস্তুত।

পরবর্তী ধাপে Dockerfile, Docker Images, Volumes, Networks, Docker Compose এবং Container Security বিস্তারিতভাবে শেখা যাবে।

Was this guide helpful?

Search the archive

Press Esc to close