<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Imran</title>
    <description>The latest articles on DEV Community by Imran (@codewithimran).</description>
    <link>https://dev.to/codewithimran</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3401510%2F1d3c2fa4-98c3-4852-87fd-dc2336f3d5e6.jpg</url>
      <title>DEV Community: Imran</title>
      <link>https://dev.to/codewithimran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codewithimran"/>
    <language>en</language>
    <item>
      <title>🧠 The Ultimate Kubernetes Guide — From Zero to Pro (With Hands-On YAML)</title>
      <dc:creator>Imran</dc:creator>
      <pubDate>Thu, 31 Jul 2025 01:43:08 +0000</pubDate>
      <link>https://dev.to/codewithimran/the-ultimate-kubernetes-guide-from-zero-to-pro-with-hands-on-yaml-4294</link>
      <guid>https://dev.to/codewithimran/the-ultimate-kubernetes-guide-from-zero-to-pro-with-hands-on-yaml-4294</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qpnlg1anehmq3224rvb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qpnlg1anehmq3224rvb.png" alt=" " width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes is the operating system of the cloud—and understanding it is essential for modern DevOps, SaaS, and full-stack development. Whether you're a beginner or looking to deepen your knowledge, this tutorial will walk you through every core concept with real-world examples.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📦 What is Kubernetes?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes (K8s) is an open-source container orchestration platform that helps you deploy, scale, and manage containerized applications.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Imagine running 100+ microservices. How do you keep them alive, ensure networking, balance traffic, and roll out updates safely? That’s what Kubernetes automates.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔧 Why Use Kubernetes?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🚀 Auto-scaling and load balancing&lt;/li&gt;
&lt;li&gt;🔁 Self-healing (crash recovery, restart)&lt;/li&gt;
&lt;li&gt;🛠️ Rolling updates with zero downtime&lt;/li&gt;
&lt;li&gt;🔐 Secrets &amp;amp; configuration management&lt;/li&gt;
&lt;li&gt;🗃️ Persistent storage&lt;/li&gt;
&lt;li&gt;🌐 Ingress + traffic routing&lt;/li&gt;
&lt;li&gt;🧱 Infrastructure-as-Code (YAML)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠️ Kubernetes Core Components (Visualized)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pod&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Smallest unit in K8s. Runs 1+ containers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Manages pods &amp;amp; versions over time.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Exposes your pods within/outside the cluster.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ingress&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Manages HTTP/HTTPS routing to services.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ConfigMap&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Externalizes config data (non-sensitive).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Secret&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Injects sensitive data (passwords, tokens).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PVC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Persistent storage requests for stateful apps.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Node&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A VM or physical machine in the cluster.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🧱 Hands-On: Create a Complete K8s App Stack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;We'll now walk through creating:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A simple Node.js app&lt;/li&gt;
&lt;li&gt;A Deployment to manage it&lt;/li&gt;
&lt;li&gt;A Service to expose it&lt;/li&gt;
&lt;li&gt;A ConfigMap and Secret&lt;/li&gt;
&lt;li&gt;A PersistentVolumeClaim&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  📁 Step 1: &lt;code&gt;deployment.yaml&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: node:18
          command: ["node", "-e", "require('http').createServer((_,res)=&amp;gt;res.end('Hi')).listen(3000)"]
          ports:
            - containerPort: 3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ✅ What it does:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Launches 2 pods of a Node.js app&lt;/li&gt;
&lt;li&gt;Uses node:18 as base image&lt;/li&gt;
&lt;li&gt;Exposes port 3000 inside the container&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌐 Step 2: &lt;code&gt;service.yaml&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  type: NodePort
  selector:
    app: my-app
  ports:
    - port: 80
      targetPort: 3000
      nodePort: 30080

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ✅ What it does:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Makes the app available via port &lt;code&gt;30080&lt;/code&gt;on your node&lt;/li&gt;
&lt;li&gt;Load-balances between the pods&lt;/li&gt;
&lt;li&gt;Accepts requests on port &lt;code&gt;80&lt;/code&gt;, routes to &lt;code&gt;3000&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚙️ Step 3: &lt;code&gt;configmap.yaml&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  APP_ENV: production

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ✅ What it does:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Stores non-sensitive environment variables&lt;/li&gt;
&lt;li&gt;Can be injected into your pod like this:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;envFrom:
  - configMapRef:
      name: app-config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔐 Step 4: &lt;code&gt;secret.yaml&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Secret
metadata:
  name: db-secret
type: Opaque
data:
  DB_PASSWORD: bXlTZWNyZXRQYXNz

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ✅ What it does:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Encodes secrets in base64 (e.g. &lt;code&gt;mySecretPass&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;You can inject it in your pod:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;env:
  - name: DB_PASSWORD
    valueFrom:
      secretKeyRef:
        name: db-secret
        key: DB_PASSWORD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  💾 Step 5:&lt;code&gt;pvc.yaml&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ✅ What it does:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Requests 1 GB of storage&lt;/li&gt;
&lt;li&gt;You can mount it into your pod at &lt;code&gt;/data&lt;/code&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;volumes:
  - name: storage
    persistentVolumeClaim:
      claimName: my-pvc

volumeMounts:
  - name: storage
    mountPath: /data

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🚀 Running Everything
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f configmap.yaml
kubectl apply -f secret.yaml
kubectl apply -f pvc.yaml

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  📚 Bonus: Useful K8s Commands
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pods
kubectl get svc
kubectl describe pod &amp;lt;pod-name&amp;gt;
kubectl logs &amp;lt;pod-name&amp;gt;
kubectl delete -f deployment.yaml

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ❤️ Support &amp;amp; Follow
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;If you found this helpful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧠 Follow me for more DevOps + Cloud tutorials&lt;/li&gt;
&lt;li&gt;💬 Comment your Kubernetes use-case&lt;/li&gt;
&lt;li&gt;⭐ Save this post for later&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devops</category>
      <category>kubernetes</category>
      <category>yam</category>
      <category>programming</category>
    </item>
    <item>
      <title>🚀 Master Docker: A DevOps-Grade Tutorial for Developers and Engineers 🐳</title>
      <dc:creator>Imran</dc:creator>
      <pubDate>Thu, 31 Jul 2025 01:00:35 +0000</pubDate>
      <link>https://dev.to/codewithimran/master-docker-a-devops-grade-tutorial-for-developers-and-engineers-1me8</link>
      <guid>https://dev.to/codewithimran/master-docker-a-devops-grade-tutorial-for-developers-and-engineers-1me8</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd6np4g33qqkv2hgrz1u6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd6np4g33qqkv2hgrz1u6.png" alt=" " width="800" height="410"&gt;&lt;/a&gt;&lt;br&gt;
📌 Why Docker? &lt;/p&gt;

&lt;p&gt;Docker eliminates "it works on my machine" problems by containerizing apps along with their environments. It’s the backbone of modern DevOps, enabling reproducible builds, fast deployments, and scalable infrastructure.&lt;/p&gt;

&lt;p&gt;Whether you're building microservices, APIs, frontends, or full-stack SaaS apps—Docker is essential.&lt;/p&gt;

&lt;p&gt;🔧 Prerequisites:&lt;br&gt;
✅ Basic CLI knowledge&lt;br&gt;
✅ A project or app to test Docker with (Node.js used here, but language doesn't matter)&lt;/p&gt;
&lt;h2&gt;
  
  
  🛠️ 1. Install Docker
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;🖥️ macOS / Windows&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;➡️ Install Docker Desktop: &lt;a href="https://www.docker.com/products/docker-desktop" rel="noopener noreferrer"&gt;https://www.docker.com/products/docker-desktop&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Verify&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;docker --version&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🐳 2. Understand Docker’s Core Concepts
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concept&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Image&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A blueprint of your app (like a class)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Container&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A running instance of an image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dockerfile&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Instructions to build your image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Volume&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Persistent storage for containers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Network&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Allows containers to communicate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Registry&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Stores images (like Docker Hub or GitHub Container Registry)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  🚀 3. Running Your First Container
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;docker run hello-world&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pulls the &lt;code&gt;hello-world&lt;/code&gt; image&lt;/li&gt;
&lt;li&gt;Runs it inside a new container&lt;/li&gt;
&lt;li&gt;Shows a success message&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  🧱 4. Create and Use a Dockerfile
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step-by-step: Let's Dockerize a Node.js app.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Project:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir myapp &amp;amp;&amp;amp; cd myapp
npm init -y
npm i express
echo "require('express')().listen(3000)" &amp;gt; index.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;DockerFile :&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Base image
FROM node:18

# Set working directory
WORKDIR /app

# Copy files
COPY package*.json ./
RUN npm install
COPY . .

# Expose and run
EXPOSE 3000
CMD ["node", "index.js"]

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;em&gt;Build and Run:&lt;/em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build -t myapp .
docker run -p 3000:3000 myapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  📦 5. Use Volumes (Dev Mode)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;So changes reflect without rebuilds:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -p 3000:3000 -v $(pwd):/app myapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔁 6. Docker Compose – Multi-Container Apps
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example: Node.js app + MongoDB&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;pre&amp;gt;
version: '3.9'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
    environment:
      - NODE_ENV=development
    depends_on:
      - mongo

  mongo:
    image: mongo
    volumes:
      - mongodata:/data/db
    ports:
      - "27017:27017"

volumes:
  mongodata:

&amp;lt;/pre&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;*** Run: ***&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker-compose up --build

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  💡7. Multi-Stage Docker Builds
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Reduce image size and isolate build from production:&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Stage 1: Build
FROM node:18 AS builder
WORKDIR /app
COPY . .
RUN npm install &amp;amp;&amp;amp; npm run build

# Stage 2: Runtime
FROM node:18-slim
WORKDIR /app
COPY --from=builder /app/dist .
CMD ["node", "server.js"]

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🧰 8. Helpful Docker Commands
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker ps -a                 # List all containers
docker images                # List images
docker logs &amp;lt;container&amp;gt;      # Logs
docker exec -it &amp;lt;container&amp;gt; bash  # Enter container
docker stop &amp;lt;id&amp;gt;             # Stop container
docker rm &amp;lt;id&amp;gt;               # Remove container
docker rmi &amp;lt;image&amp;gt;           # Remove image

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔐 9. Docker Security Best Practices
&lt;/h2&gt;

&lt;p&gt;✅ Use minimal base images &lt;code&gt;(alpine, node:slim)&lt;/code&gt;&lt;br&gt;
✅ Use &lt;code&gt;.dockerignore&lt;/code&gt; like &lt;code&gt;.gitignore&lt;/code&gt;&lt;br&gt;
✅ Run as non-root if possible&lt;br&gt;
✅ Use image scanning tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker scout quickview
# or
trivy image myapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔄 10. Real DevOps CI/CD with Docker
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;GitHub Actions Example:&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;pre&amp;gt;
name: Docker CI

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Build Docker image
        run: docker build -t myorg/myapp:${{ github.sha }} .

      - name: Push to Docker Hub
        run: |
          echo "${{ secrets.DOCKER_PASS }}" | docker login -u ${{ secrets.DOCKER_USER }} --password-stdin
          docker push myorg/myapp:${{ github.sha }}
&amp;lt;/pre&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🧪 11. Advanced Real-World Scenarios
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;📌 Run PostgreSQL + Adminer for Dev:&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;services:
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: pass

  adminer:
    image: adminer
    ports:
      - "8080:8080"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;🧩 Host React or Next.js with Nginx:&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM node:18 AS builder
WORKDIR /app
COPY . .
RUN npm install &amp;amp;&amp;amp; npm run build

FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🧼 12. Clean Up Resources
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker system prune -a
docker volume prune
docker image prune
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🧠 Conclusion: Docker is DevOps
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Once you’ve mastered Docker:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Build fast, reproducible workflows&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Deploy secure, production-ready images&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Use in CI/CD pipelines&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Plug into Kubernetes or serverless platforms&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💬 Want More?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Let me know in the comments if you want a follow-up:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧭 Kubernetes for Docker users&lt;/li&gt;
&lt;li&gt;🛠️ Docker + Ansible + Terraform workflow&lt;/li&gt;
&lt;li&gt;🧠 Docker debugging &amp;amp; profiling tools&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧑‍💻 Connect With Me
&lt;/h2&gt;

&lt;p&gt;📺 YouTube: &lt;a href="https://www.youtube.com/@codewithimranu" rel="noopener noreferrer"&gt;Codewithimran&lt;/a&gt;&lt;br&gt;
🐙 GitHub: &lt;a href="https://github.com/Imranul-hoque" rel="noopener noreferrer"&gt;Codewithimran&lt;/a&gt;&lt;br&gt;
💡 LinkedIn: &lt;a href="https://www.linkedin.com/in/imranul-hoque/" rel="noopener noreferrer"&gt;Codewithimran&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
      <category>docker</category>
      <category>development</category>
    </item>
  </channel>
</rss>
