<?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: Chetan Inaganti </title>
    <description>The latest articles on DEV Community by Chetan Inaganti  (@chetancodelrca).</description>
    <link>https://dev.to/chetancodelrca</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3758764%2F7629a552-9688-49df-9dbf-7843e423b733.jpeg</url>
      <title>DEV Community: Chetan Inaganti </title>
      <link>https://dev.to/chetancodelrca</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chetancodelrca"/>
    <language>en</language>
    <item>
      <title>Docker for Beginners: Images, Containers, Ports, and Volumes Explained</title>
      <dc:creator>Chetan Inaganti </dc:creator>
      <pubDate>Sat, 08 Aug 2026 06:00:04 +0000</pubDate>
      <link>https://dev.to/chetancodelrca/docker-for-beginners-images-containers-ports-and-volumes-explained-ee6</link>
      <guid>https://dev.to/chetancodelrca/docker-for-beginners-images-containers-ports-and-volumes-explained-ee6</guid>
      <description>&lt;h1&gt;
  
  
  Docker for Beginners: Images, Containers, Ports, and Volumes Explained
&lt;/h1&gt;

&lt;p&gt;If you've ever followed a programming tutorial and seen something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you've probably wondered:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What exactly is Docker doing?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I had the same question when I started learning Docker.&lt;/p&gt;

&lt;p&gt;At first, I thought Docker was simply a way to "run applications in containers."&lt;/p&gt;

&lt;p&gt;But there is much more to it.&lt;/p&gt;

&lt;p&gt;Once I understood four concepts — &lt;strong&gt;images, containers, ports, and volumes&lt;/strong&gt; — Docker became much easier to understand.&lt;/p&gt;

&lt;p&gt;So let's break it down from the beginning.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Docker?
&lt;/h2&gt;

&lt;p&gt;Docker is a platform for building, packaging, and running applications in isolated environments called &lt;strong&gt;containers&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The basic idea is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Package an application together with the things it needs to run, and make that package portable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example, imagine you build a Python application.&lt;/p&gt;

&lt;p&gt;Your application might depend on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.12&lt;/li&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;Uvicorn&lt;/li&gt;
&lt;li&gt;Several Python packages&lt;/li&gt;
&lt;li&gt;Environment variables&lt;/li&gt;
&lt;li&gt;Certain system libraries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On your computer, everything works.&lt;/p&gt;

&lt;p&gt;Then someone else downloads your project.&lt;/p&gt;

&lt;p&gt;They install a different Python version.&lt;/p&gt;

&lt;p&gt;A package is missing.&lt;/p&gt;

&lt;p&gt;Something behaves differently.&lt;/p&gt;

&lt;p&gt;Now you have:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It works on my machine."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Docker helps reduce this problem by allowing you to define the environment your application should run in.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Four Concepts You Need to Understand
&lt;/h1&gt;

&lt;p&gt;Before learning Docker commands, understand these four things:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Docker Image
      ↓
Docker Container
      ↓
Ports
      ↓
Volumes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's look at each one.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. What Is a Docker Image?
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;Docker image&lt;/strong&gt; is a packaged, read-only template used to create containers.&lt;/p&gt;

&lt;p&gt;Think of it like a blueprint.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Docker Image
│
├── Ubuntu
├── Python
├── Application code
├── Dependencies
└── Configuration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An image contains the instructions and filesystem needed to create a container.&lt;/p&gt;

&lt;p&gt;You can download images from container registries such as Docker Hub.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker pull nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This downloads the Nginx image.&lt;/p&gt;

&lt;p&gt;You can see your downloaded images with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You might see something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;REPOSITORY    TAG       IMAGE ID       SIZE
nginx         latest    abc123...      ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  2. What Is a Container?
&lt;/h1&gt;

&lt;p&gt;A container is a &lt;strong&gt;running instance of an image&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This distinction is important.&lt;/p&gt;

&lt;p&gt;Think about it like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Image       = Blueprint
Container   = Running thing created from the blueprint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Docker takes the Nginx image and creates a container from it.&lt;/p&gt;

&lt;p&gt;You can see running containers with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To see both running and stopped containers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You might see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CONTAINER ID   IMAGE   STATUS
abc123         nginx   Up 2 minutes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Image vs Container
&lt;/h1&gt;

&lt;p&gt;This is one of the most important Docker concepts.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Image&lt;/th&gt;
&lt;th&gt;Container&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Template&lt;/td&gt;
&lt;td&gt;Running instance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Read-only&lt;/td&gt;
&lt;td&gt;Has a writable container layer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Used to create containers&lt;/td&gt;
&lt;td&gt;Created from an image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can be stored in a registry&lt;/td&gt;
&lt;td&gt;Exists on your Docker host&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A single image can be used to create multiple containers.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          Nginx Image
          /    |    \
         /     |     \
        ↓      ↓      ↓
   Container  Container  Container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  3. What Are Ports?
&lt;/h1&gt;

&lt;p&gt;Here's where Docker can initially feel confusing.&lt;/p&gt;

&lt;p&gt;Suppose you have a web application running inside a container.&lt;/p&gt;

&lt;p&gt;Your application might listen on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Port 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But that port belongs to the container's network environment.&lt;/p&gt;

&lt;p&gt;Your browser needs a way to access it from your computer.&lt;/p&gt;

&lt;p&gt;That's where &lt;strong&gt;port mapping&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:80 nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your computer       Container
     8080      →       80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So when you visit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Docker forwards the traffic to port &lt;code&gt;80&lt;/code&gt; inside the container.&lt;/p&gt;

&lt;p&gt;The general syntax is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-p&lt;/span&gt; HOST_PORT:CONTAINER_PORT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-p&lt;/span&gt; 8080:80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host:      8080
Container: 80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This distinction is extremely important when working with web applications.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. What Are Volumes?
&lt;/h1&gt;

&lt;p&gt;Containers are designed to be replaceable.&lt;/p&gt;

&lt;p&gt;But sometimes your application needs to keep data.&lt;/p&gt;

&lt;p&gt;Imagine you run a PostgreSQL database inside a container.&lt;/p&gt;

&lt;p&gt;If the container is removed, you don't want your database data to disappear with it.&lt;/p&gt;

&lt;p&gt;That's where &lt;strong&gt;volumes&lt;/strong&gt; come in.&lt;/p&gt;

&lt;p&gt;A volume stores persistent data outside the container's writable layer.&lt;/p&gt;

&lt;p&gt;You can create one with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker volume create mydata
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then attach it to a container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-v&lt;/span&gt; mydata:/data some-image
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Container
    │
    │ writes data
    ↓
 Docker Volume
    │
    ↓
Persistent storage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So even if the container is removed, the volume can remain.&lt;/p&gt;




&lt;h1&gt;
  
  
  Let's Run Our First Container
&lt;/h1&gt;

&lt;p&gt;Let's start with something simple.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run hello-world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Docker will:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Look for the &lt;code&gt;hello-world&lt;/code&gt; image locally.&lt;/li&gt;
&lt;li&gt;Download it if necessary.&lt;/li&gt;
&lt;li&gt;Create a container from the image.&lt;/li&gt;
&lt;li&gt;Start the container.&lt;/li&gt;
&lt;li&gt;The container prints its message.&lt;/li&gt;
&lt;li&gt;The process exits.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can check what happened with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see the container even though it has stopped.&lt;/p&gt;

&lt;p&gt;This was one of the first Docker commands I tried while learning Docker.&lt;/p&gt;




&lt;h1&gt;
  
  
  Running Nginx
&lt;/h1&gt;

&lt;p&gt;Let's try something that stays running.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:80 &lt;span class="nt"&gt;--name&lt;/span&gt; my-nginx nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's break this command down.&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
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create and start a container.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it in detached mode, meaning the container runs in the background.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-p 8080:80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Map port &lt;code&gt;8080&lt;/code&gt; on your computer to port &lt;code&gt;80&lt;/code&gt; in the container.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--name my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Give the container a memorable name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the Nginx image.&lt;/p&gt;

&lt;p&gt;Now open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see the Nginx welcome page.&lt;/p&gt;




&lt;h1&gt;
  
  
  Managing the Container
&lt;/h1&gt;

&lt;p&gt;See running containers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stop the container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker stop my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start it again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker start my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Remove it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;rm &lt;/span&gt;my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See its logs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker logs my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inspect detailed information:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker inspect my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These commands are worth learning because you'll use them constantly.&lt;/p&gt;




&lt;h1&gt;
  
  
  Where Does the Nginx Image Come From?
&lt;/h1&gt;

&lt;p&gt;When you run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Docker first checks whether the image exists locally.&lt;/p&gt;

&lt;p&gt;If it doesn't, Docker pulls the image from a container registry.&lt;/p&gt;

&lt;p&gt;The general workflow looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Docker Hub
    │
    │ docker pull
    ↓
Docker Image
    │
    │ docker run
    ↓
Docker Container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A registry is essentially a place where container images can be stored and distributed.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Is a Dockerfile?
&lt;/h1&gt;

&lt;p&gt;So far we've been using existing images.&lt;/p&gt;

&lt;p&gt;But what if we want to package &lt;strong&gt;our own application&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;That's where a &lt;code&gt;Dockerfile&lt;/code&gt; comes in.&lt;/p&gt;

&lt;p&gt;A Dockerfile is a text file containing instructions for building a Docker image.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; python:3.12&lt;/span&gt;

&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /app&lt;/span&gt;

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; . .&lt;/span&gt;

&lt;span class="k"&gt;RUN &lt;/span&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["python", "app.py"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's understand it.&lt;/p&gt;




&lt;h2&gt;
  
  
  FROM
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; python:3.12&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This specifies the base image.&lt;/p&gt;

&lt;p&gt;We're starting with a Python 3.12 environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  WORKDIR
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /app&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This sets the working directory inside the image.&lt;/p&gt;




&lt;h2&gt;
  
  
  COPY
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; . .&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This copies files from our project into the image.&lt;/p&gt;




&lt;h2&gt;
  
  
  RUN
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;RUN &lt;/span&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This executes a command while the image is being built.&lt;/p&gt;

&lt;p&gt;Here, we're installing Python dependencies.&lt;/p&gt;




&lt;h2&gt;
  
  
  CMD
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["python", "app.py"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This specifies the default command that runs when a container starts from the image.&lt;/p&gt;




&lt;h1&gt;
  
  
  Building Our Own Image
&lt;/h1&gt;

&lt;p&gt;Suppose our project looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-app/
│
├── Dockerfile
├── app.py
└── requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From inside the project directory, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; my-python-app &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-t&lt;/code&gt; option gives the image a name.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;.&lt;/code&gt; tells Docker to use the current directory as the build context.&lt;/p&gt;

&lt;p&gt;Now check your images:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-python-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can now create a container from it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run my-python-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  The Docker Workflow
&lt;/h1&gt;

&lt;p&gt;At this point, the whole process starts to make sense.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             Dockerfile
                 │
                 │ docker build
                 ↓
            Docker Image
                 │
                 │ docker run
                 ↓
           Docker Container
                 │
          ┌──────┴──────┐
          ↓             ↓
        Ports         Volumes
          ↓             ↓
       Network       Persistent
       access          data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the mental model I wish I had when I first started learning Docker.&lt;/p&gt;




&lt;h1&gt;
  
  
  A Simple Mental Model
&lt;/h1&gt;

&lt;p&gt;If you remember nothing else from this article, remember this:&lt;/p&gt;

&lt;h3&gt;
  
  
  Dockerfile
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Instructions for building an image.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Image
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;A packaged template for an application.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Container
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;A running instance of an image.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Port
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;A way to make a container's network service accessible.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Volume
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Persistent storage that can outlive a container.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  The Commands I Would Learn First
&lt;/h1&gt;

&lt;p&gt;You don't need to memorize every Docker command.&lt;/p&gt;

&lt;p&gt;Start with these:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nt"&gt;--version&lt;/span&gt;

docker pull IMAGE

docker images

docker run IMAGE

docker ps

docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;

docker stop CONTAINER

docker start CONTAINER

docker logs CONTAINER

docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; CONTAINER bash

docker build &lt;span class="nt"&gt;-t&lt;/span&gt; IMAGE &lt;span class="nb"&gt;.&lt;/span&gt;

docker &lt;span class="nb"&gt;rm &lt;/span&gt;CONTAINER

docker rmi IMAGE

docker volume &lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once these become familiar, learning more Docker features becomes much easier.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I Learned
&lt;/h1&gt;

&lt;p&gt;The biggest thing I learned while starting Docker is that the commands aren't the difficult part.&lt;/p&gt;

&lt;p&gt;The mental model is.&lt;/p&gt;

&lt;p&gt;Once I understood:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Dockerfile
    ↓
Image
    ↓
Container
    ↓
Ports + Volumes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the commands started making much more sense.&lt;/p&gt;

&lt;p&gt;Docker stopped feeling like a collection of random commands and started feeling like a system.&lt;/p&gt;




&lt;h1&gt;
  
  
  What's Next?
&lt;/h1&gt;

&lt;p&gt;This is only the beginning.&lt;/p&gt;

&lt;p&gt;The next step for me is taking something I've actually built and putting it inside a container.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FastAPI Application
        ↓
     Dockerfile
        ↓
   Docker Image
        ↓
    Container
        ↓
      Port
        ↓
    Web API
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's where Docker becomes much more interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;If you're learning Docker right now, don't try to memorize 100 commands.&lt;/p&gt;

&lt;p&gt;Start with the fundamentals:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Images → Containers → Ports → Volumes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Understand what each one does.&lt;/p&gt;

&lt;p&gt;Then build something.&lt;/p&gt;

&lt;p&gt;That's when Docker starts to click.&lt;/p&gt;




&lt;h2&gt;
  
  
  What About You?
&lt;/h2&gt;

&lt;p&gt;When did Docker finally start making sense to you?&lt;/p&gt;

&lt;p&gt;And if you're just starting:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What part of Docker is confusing you right now?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd be interested to hear about it in the comments.&lt;/p&gt;




&lt;h3&gt;
  
  
  Related
&lt;/h3&gt;

&lt;p&gt;This is the second article in my journey toward building a modern development environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 1:&lt;/strong&gt; From Windows to WSL (Ubuntu) + Docker&lt;/p&gt;

&lt;p&gt;More articles coming as I learn and build.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>linux</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I Switched from Windows to WSL for Development—Here's What Changed</title>
      <dc:creator>Chetan Inaganti </dc:creator>
      <pubDate>Wed, 05 Aug 2026 13:01:49 +0000</pubDate>
      <link>https://dev.to/chetancodelrca/i-switched-from-windows-to-wsl-for-development-heres-what-changed-2899</link>
      <guid>https://dev.to/chetancodelrca/i-switched-from-windows-to-wsl-for-development-heres-what-changed-2899</guid>
      <description>&lt;h1&gt;
  
  
  I Switched from Windows to WSL for Development—Here's What Changed
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;After years of developing directly on Windows, I finally switched to Windows Subsystem for Linux (WSL). I expected a small improvement—but it completely changed how I build software.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why I Decided to Switch
&lt;/h2&gt;

&lt;p&gt;I'm a third-year Computer Science student who spends most of my time building projects in Python, FastAPI, AI, Docker, and Android development.&lt;/p&gt;

&lt;p&gt;As my projects became larger, I noticed something interesting:&lt;/p&gt;

&lt;p&gt;Almost every tutorial, GitHub repository, and deployment guide assumed I was using Linux.&lt;/p&gt;

&lt;p&gt;While Windows worked fine, I often had to find Windows-specific fixes or modify commands before they would work.&lt;/p&gt;

&lt;p&gt;I wanted an environment that matched what developers actually use in production.&lt;/p&gt;

&lt;p&gt;That's when I decided to install &lt;strong&gt;Windows Subsystem for Linux (WSL)&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  My Development Setup
&lt;/h1&gt;

&lt;p&gt;Here's my current setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💻 Windows 11&lt;/li&gt;
&lt;li&gt;🐧 Ubuntu running inside WSL&lt;/li&gt;
&lt;li&gt;💙 VS Code with the Remote - WSL extension&lt;/li&gt;
&lt;li&gt;🐳 Docker Desktop&lt;/li&gt;
&lt;li&gt;🐍 Python&lt;/li&gt;
&lt;li&gt;⚡ FastAPI&lt;/li&gt;
&lt;li&gt;🌿 Git &amp;amp; GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now I can enjoy Windows for everyday tasks while developing inside a real Linux environment.&lt;/p&gt;

&lt;p&gt;Best of both worlds.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Improved
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Everything Feels More Natural
&lt;/h2&gt;

&lt;p&gt;Most developer documentation is written for Linux.&lt;/p&gt;

&lt;p&gt;Instead of translating every command, I can simply copy and paste commands directly from tutorials.&lt;/p&gt;

&lt;p&gt;Examples like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install
chmod&lt;/span&gt; +x
ssh
curl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;work exactly as expected.&lt;/p&gt;

&lt;p&gt;That alone has saved me a surprising amount of time.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Docker Finally Made Sense
&lt;/h2&gt;

&lt;p&gt;I recently started learning Docker.&lt;/p&gt;

&lt;p&gt;Almost every Docker tutorial assumes you're running Linux.&lt;/p&gt;

&lt;p&gt;Inside WSL, Docker behaves exactly the way the documentation expects.&lt;/p&gt;

&lt;p&gt;Creating images, running containers, mounting volumes, and using the terminal all feel much more straightforward.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. VS Code Integration Is Excellent
&lt;/h2&gt;

&lt;p&gt;One feature I didn't expect to enjoy this much was VS Code's Remote - WSL extension.&lt;/p&gt;

&lt;p&gt;Opening a project inside WSL automatically gives me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux terminal&lt;/li&gt;
&lt;li&gt;Linux Python interpreter&lt;/li&gt;
&lt;li&gt;Linux Git&lt;/li&gt;
&lt;li&gt;Linux Docker&lt;/li&gt;
&lt;li&gt;Better compatibility with development tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;without ever leaving VS Code.&lt;/p&gt;

&lt;p&gt;It feels almost like using a native Linux machine.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Learning Linux Became Easier
&lt;/h2&gt;

&lt;p&gt;Before switching, Linux was just another subject I wanted to learn.&lt;/p&gt;

&lt;p&gt;Now I use it every day.&lt;/p&gt;

&lt;p&gt;Simple commands like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls
cd
pwd
mkdir
cp
mv
grep
&lt;/span&gt;find
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;have become part of my daily workflow.&lt;/p&gt;

&lt;p&gt;The best way to learn Linux is by actually using it.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. My Development Workflow Feels Cleaner
&lt;/h2&gt;

&lt;p&gt;Instead of installing every tool directly on Windows, I now keep my development environment inside Linux.&lt;/p&gt;

&lt;p&gt;That separation makes everything feel more organized.&lt;/p&gt;

&lt;p&gt;It also gives me more confidence that my projects will behave similarly when deployed to cloud servers.&lt;/p&gt;




&lt;h1&gt;
  
  
  Challenges I Faced
&lt;/h1&gt;

&lt;p&gt;The transition wasn't completely smooth.&lt;/p&gt;

&lt;p&gt;Some things confused me at first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding Linux file paths&lt;/li&gt;
&lt;li&gt;File permissions&lt;/li&gt;
&lt;li&gt;WSL networking&lt;/li&gt;
&lt;li&gt;Docker permissions&lt;/li&gt;
&lt;li&gt;Knowing whether files lived in Windows or Linux&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fortunately, most of these issues were solved after spending a little time reading the documentation and experimenting.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I'm Learning Next
&lt;/h1&gt;

&lt;p&gt;Now that my environment is ready, I'm focusing on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;Machine Learning&lt;/li&gt;
&lt;li&gt;AI Agents&lt;/li&gt;
&lt;li&gt;System Design&lt;/li&gt;
&lt;li&gt;Open Source&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Having a proper Linux development environment makes learning these technologies much easier.&lt;/p&gt;




&lt;h1&gt;
  
  
  My Advice for Students
&lt;/h1&gt;

&lt;p&gt;If you're a Computer Science student interested in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend Development&lt;/li&gt;
&lt;li&gt;Artificial Intelligence&lt;/li&gt;
&lt;li&gt;Machine Learning&lt;/li&gt;
&lt;li&gt;DevOps&lt;/li&gt;
&lt;li&gt;Cloud Computing&lt;/li&gt;
&lt;li&gt;Open Source&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I genuinely think learning WSL is worth the effort.&lt;/p&gt;

&lt;p&gt;You don't need to replace Windows.&lt;/p&gt;

&lt;p&gt;You simply gain access to a Linux environment that integrates beautifully with your existing workflow.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Switching to WSL wasn't just about installing another tool.&lt;/p&gt;

&lt;p&gt;It changed how I approach software development.&lt;/p&gt;

&lt;p&gt;I'm still learning every day, but moving closer to a Linux-based workflow has already made me more comfortable with modern development tools.&lt;/p&gt;

&lt;p&gt;If you're thinking about making the switch, I'd say give it a try.&lt;/p&gt;

&lt;p&gt;You might be surprised by how quickly it becomes part of your daily routine.&lt;/p&gt;




&lt;h2&gt;
  
  
  What About You?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Do you develop on Windows, Linux, or macOS?&lt;/li&gt;
&lt;li&gt;Have you tried WSL?&lt;/li&gt;
&lt;li&gt;What's one tool that improved your workflow the most?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love to hear your experiences in the comments.&lt;/p&gt;

&lt;p&gt;Happy coding! 🚀&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#wsl&lt;/code&gt; &lt;code&gt;#linux&lt;/code&gt; &lt;code&gt;#docker&lt;/code&gt; &lt;code&gt;#python&lt;/code&gt;&lt;/p&gt;

</description>
      <category>wsl</category>
      <category>docker</category>
      <category>python</category>
      <category>linux</category>
    </item>
    <item>
      <title>Building My Neon Cyberpunk AI Portfolio from Scratch – A 2nd-Year CS Student's Glow-Up Journey✨</title>
      <dc:creator>Chetan Inaganti </dc:creator>
      <pubDate>Thu, 12 Feb 2026 20:29:11 +0000</pubDate>
      <link>https://dev.to/chetancodelrca/building-my-neon-cyberpunk-ai-portfolio-from-scratch-a-2nd-year-cs-students-glow-up-journey-1md8</link>
      <guid>https://dev.to/chetancodelrca/building-my-neon-cyberpunk-ai-portfolio-from-scratch-a-2nd-year-cs-students-glow-up-journey-1md8</guid>
      <description>&lt;p&gt;Hey dev fam! 👋 I'm Chetan Inaganti, a 2nd-year B.Tech Computer Science Engineering student at Sir Padampat Singhania University (SPSU). Deep into edtech, databases, and AI. Always learning—blending class theory with real builds in creative collabs.&lt;/p&gt;

&lt;p&gt;Hunting strong 2026 internships/roles while sharing my journey on dev.to. If you're a student grinding portfolios, this is your guide—I went from empty GitHub to a futuristic neon site that screams "hire me." Let's break it down basics-first, with code, so you can build yours and level up.&lt;/p&gt;

&lt;p&gt;Live demo: &lt;a href="https://chetan-code-lrca.github.io/Portfolio/" rel="noopener noreferrer"&gt;https://chetan-code-lrca.github.io/Portfolio/&lt;/a&gt;&lt;br&gt;
Repo: &lt;a href="https://github.com/Chetan-code-lrca/Portfolio" rel="noopener noreferrer"&gt;https://github.com/Chetan-code-lrca/Portfolio&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why I Built This (The Career Glow-Up Motivation)&lt;br&gt;
As a 2nd-year, resumes feel flat—recruiters want proof you ship. Inspired by dev.to posts like Scrimba's minimal examples, I aimed for unique: Neon cyberpunk to stand out in India's AI scene (most are plain white). Zero backend, pure HTML/CSS for speed—loads &amp;lt;1s on 4G.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Basics – Setup &amp;amp; Structure (Even If Easy, Start Here)&lt;/strong&gt;&lt;br&gt;
Cloned my empty repo in VS Code: git clone &lt;a href="https://github.com/Chetan-code-lrca/Portfolio" rel="noopener noreferrer"&gt;https://github.com/Chetan-code-lrca/Portfolio&lt;/a&gt;&lt;br&gt;
Created files: index.html, style.css, images/ folder (tinypng.com for compression).&lt;br&gt;
Core HTML with div sections (modular for easy updates)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Neon Magic CSS (Cyberpunk Vibe)&lt;/strong&gt;&lt;br&gt;
Dark void (#0a0015), cyan glows (#00f0ff), right-to-left marquee. Hover pause for UX.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Real Content (Photo, Certs, Projects)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Photo: Neon-bordered in hero.&lt;br&gt;
Certs: 7 scrolling (ICIP, AMD Slingshot, Road Safety, ICC, RedHat Linux, etc.)—duplicated for seamless loop.&lt;br&gt;
Projects: Rajasthan Helper (screenshot + GitHub) + placeholders. Update via simple edit/push.&lt;/p&gt;

&lt;p&gt;Deploy: GitHub Pages (Settings &amp;gt; Pages &amp;gt; main/root &amp;gt; Save).&lt;/p&gt;

&lt;p&gt;Unique twist: Cyberpunk over minimal—stands out, got me hackathon nods.&lt;/p&gt;

&lt;p&gt;Roast zone: Too neon? Marquee laggy? What's weak—hit comments! Open to collabs.&lt;br&gt;
Thanks for reading—star the repo if inspired. What's your portfolio story?&lt;/p&gt;

&lt;h1&gt;
  
  
  AI #MachineLearning #Portfolio #WebDev #CodingJourney
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>portfolio</category>
      <category>webdev</category>
      <category>codingjourney</category>
    </item>
    <item>
      <title>Hello DEV! 👋 I'm Chetan – Student Learning ML, Python &amp; AI One Project at a Time</title>
      <dc:creator>Chetan Inaganti </dc:creator>
      <pubDate>Wed, 11 Feb 2026 16:34:32 +0000</pubDate>
      <link>https://dev.to/chetancodelrca/hello-dev-im-chetan-student-learning-ml-python-ai-one-project-at-a-time-1m2g</link>
      <guid>https://dev.to/chetancodelrca/hello-dev-im-chetan-student-learning-ml-python-ai-one-project-at-a-time-1m2g</guid>
      <description>&lt;p&gt;Hello DEV community! 👋&lt;/p&gt;

&lt;p&gt;I'm Chetan Inaganti from Udaipur, Rajasthan 🇮🇳. I'm currently a student at Sir Padampat Singhania University (SPSU), where I'm balancing college coursework with self-learning in software development and AI/ML.&lt;/p&gt;

&lt;p&gt;No prior formal coding background—just genuine excitement about how technology can solve everyday problems. I started this journey because I believe building smart applications (maybe even tools for local challenges in Rajasthan) can make a real difference one day.&lt;/p&gt;

&lt;p&gt;Right now, I'm focusing on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python fundamentals and introductory machine learning (starting with scikit-learn for simple models)&lt;/li&gt;
&lt;li&gt;C++ to build strong logic and understand OOP deeply&lt;/li&gt;
&lt;li&gt;Creating small projects to turn theory into practice (not just watching tutorials)&lt;/li&gt;
&lt;li&gt;Daily Git/GitHub commits to build consistency and track everything&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My early wins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up a pythonAI repo with basic ML experiments (simple predictions and data handling) → github.com/Chetan-code-lrca/pythonAI&lt;/li&gt;
&lt;li&gt;Worked on OOP concepts (classes, inheritance) in CPP_using_OOP repo&lt;/li&gt;
&lt;li&gt;Built a few personal GitHub Pages sites to learn HTML/CSS basics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some beginner struggles (lessons learned):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wasted hours debugging "ModuleNotFoundError: No module named 'numpy'" — classic forget-to-install mistake 😂&lt;/li&gt;
&lt;li&gt;Got overwhelmed jumping between too many courses; now I stick to one resource until it clicks&lt;/li&gt;
&lt;li&gt;Messed up my first few Git pushes (wrong branch panic) — branching is my friend now&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm planning to share my honest progress here: what I'm building, code that works (and what doesn't), small snippets, and questions when I'm stuck. Whether you're a beginner in the same boat or someone with experience willing to share tips, I'd love to connect.&lt;/p&gt;

&lt;p&gt;What was your biggest early coding hurdle? Any beginner-friendly ML or Python project ideas that helped you level up?&lt;/p&gt;

&lt;p&gt;GitHub: github.com/Chetan-code-lrca&lt;br&gt;&lt;br&gt;
LinkedIn: linkedin.com/in/chetan-inaganti-563a41322&lt;br&gt;&lt;br&gt;
X: @Chetan007329&lt;/p&gt;

&lt;p&gt;Thank you for reading — excited to learn and grow with this community! 🚀&lt;/p&gt;

</description>
      <category>introduction</category>
      <category>python</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Rajasthan Helper CLI – Real Weather, Festivals &amp; Travel Tips Built on Free GitHub Copilot CLI</title>
      <dc:creator>Chetan Inaganti </dc:creator>
      <pubDate>Mon, 09 Feb 2026 17:31:45 +0000</pubDate>
      <link>https://dev.to/chetancodelrca/rajasthan-helper-cli-real-weather-festivals-travel-tips-built-on-free-github-copilot-cli-2k4g</link>
      <guid>https://dev.to/chetancodelrca/rajasthan-helper-cli-real-weather-festivals-travel-tips-built-on-free-github-copilot-cli-2k4g</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%2Fd6ldvaguhwh6txm2bjjj.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%2Fd6ldvaguhwh6txm2bjjj.png" alt=" " width="800" height="189"&gt;&lt;/a&gt;   &lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Rajasthan Helper CLI&lt;/strong&gt; — a colorful, terminal-first tool that brings Rajasthan/India travel info right to your command line:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;weather [city]&lt;/strong&gt; — real-time weather using free wttr.in API (temp, condition, feels-like, humidity, wind)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;festival [month]&lt;/strong&gt; — major Rajasthan festivals with facts and emojis (Holi, Diwali, Teej, Pushkar Fair, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;tip [city]&lt;/strong&gt; — curated travel &amp;amp; food tips for 10+ cities (Jaipur, Udaipur, Delhi, Jodhpur, Jaisalmer…)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built &lt;strong&gt;entirely on the free tier&lt;/strong&gt; of GitHub Copilot CLI in ~20 smart prompts — no paid subscription, no credit card.&lt;br&gt;&lt;br&gt;
It means a lot to me because it combines my love for Rajasthan culture with real dev skills (API integration, rich terminal UI, packaging).&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&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%2Fi.imgur.com%2Fyour-demo-gif-link-here.gif" 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%2Fi.imgur.com%2Fyour-demo-gif-link-here.gif" alt="Rajasthan Helper CLI in action" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Shows --help, colorful weather panel for Jaipur, Holi festival card, Udaipur travel tips list)&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience with GitHub Copilot CLI
&lt;/h2&gt;

&lt;p&gt;I started from zero: installed via &lt;code&gt;npm install -g @github/copilot&lt;/code&gt;, login to my free GitHub account, ran &lt;code&gt;/init&lt;/code&gt; to create instructions.md for consistent style.  &lt;/p&gt;

&lt;p&gt;Then I used one big prompt to generate the Click + rich structure, debugged packaging nightmares (TOML duplicates, missing folders, import errors) with targeted follow-ups, and finished with API + rich formatting.  &lt;/p&gt;

&lt;p&gt;Total: ~20 prompts.&lt;br&gt;&lt;br&gt;
The biggest surprise? How fast I went from nothing to a real, working CLI with API calls and beautiful output — all for free. It completely changed how I think about building tools.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/Chetan-code-lrca/rajasthan-helper" rel="noopener noreferrer"&gt;https://github.com/Chetan-code-lrca/rajasthan-helper&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for the challenge — this was an amazing learning journey!&lt;/p&gt;

&lt;p&gt;Made by Chetan Inaganti (@Chetan007329)&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
  </channel>
</rss>
