<?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: Kalasam Ashrith</title>
    <description>The latest articles on DEV Community by Kalasam Ashrith (@ashrith28).</description>
    <link>https://dev.to/ashrith28</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%2F4123935%2F0e64e219-8e89-4be0-99d2-fe1bb3c584c8.png</url>
      <title>DEV Community: Kalasam Ashrith</title>
      <link>https://dev.to/ashrith28</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ashrith28"/>
    <language>en</language>
    <item>
      <title>Docker for Beginners: What Is Docker, Containerization, and Essential Commands</title>
      <dc:creator>Kalasam Ashrith</dc:creator>
      <pubDate>Mon, 14 Sep 2026 05:34:31 +0000</pubDate>
      <link>https://dev.to/ashrith28/docker-for-beginners-what-is-docker-containerization-and-essential-commands-1mgl</link>
      <guid>https://dev.to/ashrith28/docker-for-beginners-what-is-docker-containerization-and-essential-commands-1mgl</guid>
      <description>&lt;p&gt;If you're starting your journey in &lt;strong&gt;DevOps, Cloud, or Kubernetes&lt;/strong&gt;, one of the first technologies you'll come across is &lt;strong&gt;Docker&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When I first heard about Docker, terms like &lt;em&gt;containers, images, Dockerfile, registries,&lt;/em&gt; and &lt;em&gt;containerization&lt;/em&gt; made it sound more complicated than it actually is.&lt;/p&gt;

&lt;p&gt;After working with Docker, I realized that the basic idea is quite simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Docker allows us to package an application along with everything it needs to run and then run that package consistently in different environments.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this article, let's understand Docker from the beginning and then look at some of the fundamental Docker commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. What is Docker?
&lt;/h2&gt;

&lt;p&gt;Docker is a platform that allows us to &lt;strong&gt;build, package, and run applications inside containers&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But what exactly does that mean?&lt;/p&gt;

&lt;p&gt;Imagine that you have developed a Python application on your laptop.&lt;/p&gt;

&lt;p&gt;Your application might require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.12&lt;/li&gt;
&lt;li&gt;Specific Python libraries&lt;/li&gt;
&lt;li&gt;Environment variables&lt;/li&gt;
&lt;li&gt;Configuration files&lt;/li&gt;
&lt;li&gt;Certain system dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything works perfectly on your laptop.&lt;/p&gt;

&lt;p&gt;Now you give the application to another developer.&lt;/p&gt;

&lt;p&gt;They install it and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And they get:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because their environment is different.&lt;/p&gt;

&lt;p&gt;Maybe they have a different Python version. Maybe a required library is missing. Maybe some system dependency isn't installed.&lt;/p&gt;

&lt;p&gt;This is where Docker becomes useful.&lt;/p&gt;

&lt;p&gt;Instead of giving someone only your application, you can package the application together with its required environment into a &lt;strong&gt;Docker image&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That image can then be used to create a container.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. What Problem Does Docker Solve?
&lt;/h1&gt;

&lt;p&gt;A common problem in software development is:&lt;/p&gt;

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

&lt;p&gt;Developers may have different:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operating systems&lt;/li&gt;
&lt;li&gt;Programming language versions&lt;/li&gt;
&lt;li&gt;Libraries&lt;/li&gt;
&lt;li&gt;Dependencies&lt;/li&gt;
&lt;li&gt;Configurations&lt;/li&gt;
&lt;li&gt;Environment variables&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Docker helps reduce these environment differences by providing a consistent way to package and run applications.&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;Developer Laptop
       |
       v
    Docker
       |
       v
   Container
       |
       +---- Application
       +---- Dependencies
       +---- Required runtime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The same image can then be used in different environments.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer Machine
       |
       v
     Docker
       |
    Container
       |
       v
     App


Test Server
       |
       v
     Docker
       |
    Container
       |
       v
     App


Cloud Server
       |
       v
     Docker
       |
    Container
       |
       v
     App
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is to make the application environment much more predictable.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. What is Containerization?
&lt;/h1&gt;

&lt;p&gt;Before understanding Docker deeply, we need to understand &lt;strong&gt;containerization&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Containerization is the practice of packaging an application together with the things it needs to run into an isolated environment called a &lt;strong&gt;container&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Think of a container like a lightweight box containing your application.&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;+--------------------------------+
|          Container             |
|                                |
|   My Application               |
|                                |
|   Dependencies                 |
|                                |
|   Runtime                      |
|                                |
|   Configuration                |
+--------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The application runs inside this isolated environment.&lt;/p&gt;

&lt;p&gt;Docker provides the tools and platform that make creating and running these containers easy.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. Docker Container vs Virtual Machine
&lt;/h1&gt;

&lt;p&gt;A common question when learning Docker is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is a Docker container the same as a virtual machine?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;A virtual machine includes an entire guest operating system.&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;Physical Server
|
+-- VM 1
|    |
|    +-- Guest OS
|    +-- Application
|
+-- VM 2
     |
     +-- Guest OS
     +-- Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Containers work differently.&lt;/p&gt;

&lt;p&gt;Containers share the host operating system's &lt;strong&gt;kernel&lt;/strong&gt; while keeping applications isolated from each other.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Physical Server
|
+-----------------------------+
|        Host OS              |
|                             |
| +---------+   +---------+   |
| |Container|   |Container|   |
| |   App 1 |   |   App 2 |   |
| +---------+   +---------+   |
|                             |
+-----------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because containers don't need a separate complete guest OS for each application, they are generally much lighter and faster to start than traditional VMs.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. 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;You can think of an image as a &lt;strong&gt;blueprint&lt;/strong&gt;.&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
     |
     | creates
     v
Docker Container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you have an Nginx image, you can create a container from it.&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
     |
     +------&amp;gt; Container 1
     |
     +------&amp;gt; Container 2
     |
     +------&amp;gt; Container 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The same image can be used to create multiple containers.&lt;/p&gt;




&lt;h1&gt;
  
  
  6. What is a Docker Container?
&lt;/h1&gt;

&lt;p&gt;A container is a &lt;strong&gt;running instance of a Docker image&lt;/strong&gt;.&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 nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Docker will use the &lt;code&gt;nginx&lt;/code&gt; image to create and start a container.&lt;/p&gt;

&lt;p&gt;A simple way to remember this is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Image = blueprint&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Container = running instance created from that blueprint&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Class  → Object
Image  → Container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This isn't a perfect technical analogy, but it's useful when you're learning the concept.&lt;/p&gt;




&lt;h1&gt;
  
  
  7. What is a Dockerfile?
&lt;/h1&gt;

&lt;p&gt;Now comes another important concept: the &lt;strong&gt;Dockerfile&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A Dockerfile contains instructions that Docker uses to build an 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; nginx&lt;/span&gt;

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; index.html /usr/share/nginx/html/index.html&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here:&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; nginx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means we're starting with the Nginx image.&lt;/p&gt;

&lt;p&gt;And:&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;COPY&lt;/span&gt;&lt;span class="s"&gt; index.html /usr/share/nginx/html/index.html&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;copies our HTML file into the image.&lt;/p&gt;

&lt;p&gt;We can then build an image:&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-nginx &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And run 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-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So the basic flow is:&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
     v
Docker Image
     |
     | docker run
     v
Docker Container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is one of the most important workflows to understand when learning Docker.&lt;/p&gt;




&lt;h1&gt;
  
  
  8. Docker Registry
&lt;/h1&gt;

&lt;p&gt;Where do Docker images come from?&lt;/p&gt;

&lt;p&gt;One common source is a &lt;strong&gt;container registry&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;One of the most popular public registries is &lt;strong&gt;Docker Hub&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, you can find images such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nginx
redis
postgres
mysql
ubuntu
python
node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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 pull nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Docker downloads the Nginx image from a registry.&lt;/p&gt;

&lt;p&gt;Then you can run 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 nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The overall flow looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Docker Registry
       |
       | docker pull
       v
Docker Image
       |
       | docker run
       v
Docker Container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  9. Fundamental Docker Commands
&lt;/h1&gt;

&lt;p&gt;Now let's get practical.&lt;/p&gt;

&lt;p&gt;You don't need to memorize hundreds of Docker commands initially.&lt;/p&gt;

&lt;p&gt;Start with these fundamental commands.&lt;/p&gt;




&lt;h2&gt;
  
  
  9.1 Check Docker Version
&lt;/h2&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;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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 version 28.x.x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also use:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;The second command provides more detailed information.&lt;/p&gt;




&lt;h1&gt;
  
  
  10. Download an Image
&lt;/h1&gt;

&lt;p&gt;Use:&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 from the configured registry.&lt;/p&gt;

&lt;p&gt;You can also specify a version:&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:1.27
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here:&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 name
1.27        → image tag/version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you don't specify a tag, Docker generally uses the &lt;code&gt;latest&lt;/code&gt; tag.&lt;/p&gt;




&lt;h1&gt;
  
  
  11. List Docker Images
&lt;/h1&gt;

&lt;p&gt;After downloading an image:&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'll see something similar to:&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         192MB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This shows the images available locally.&lt;/p&gt;




&lt;h1&gt;
  
  
  12. Run a Container
&lt;/h1&gt;

&lt;p&gt;The most important command:&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;This tells Docker:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a container from the Nginx image and start it.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;ol&gt;
&lt;li&gt;Check whether the image exists locally.&lt;/li&gt;
&lt;li&gt;Download it if necessary.&lt;/li&gt;
&lt;li&gt;Create a container.&lt;/li&gt;
&lt;li&gt;Start the container.&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  13. Run a Container in the Background
&lt;/h1&gt;

&lt;p&gt;By default:&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;runs the container attached to your terminal.&lt;/p&gt;

&lt;p&gt;To run it in the background:&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; nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-d&lt;/code&gt; means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;detached mode&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The container continues running in the background.&lt;/p&gt;




&lt;h1&gt;
  
  
  14. Give a Container a Name
&lt;/h1&gt;

&lt;p&gt;You can assign a name using:&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;--name&lt;/span&gt; my-nginx nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the container is called:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;This makes it easier to manage.&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 stop my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of having to remember a container ID.&lt;/p&gt;




&lt;h1&gt;
  
  
  15. List Running Containers
&lt;/h1&gt;

&lt;p&gt;Use:&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;Example:&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   COMMAND   STATUS
abc123         nginx   ...       Up 2 minutes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This shows currently running containers.&lt;/p&gt;




&lt;h1&gt;
  
  
  16. List All Containers
&lt;/h1&gt;

&lt;p&gt;What if a container has stopped?&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker ps&lt;/code&gt; won't show it.&lt;/p&gt;

&lt;p&gt;Use:&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;The &lt;code&gt;-a&lt;/code&gt; means &lt;strong&gt;all&lt;/strong&gt; containers, including stopped containers.&lt;/p&gt;




&lt;h1&gt;
  
  
  17. Stop a Container
&lt;/h1&gt;

&lt;p&gt;To stop a running 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;Docker sends a stop request to the container and allows it to shut down gracefully.&lt;/p&gt;




&lt;h1&gt;
  
  
  18. Start a Stopped Container
&lt;/h1&gt;

&lt;p&gt;If a container already exists but is stopped:&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;Notice the difference:&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;creates a &lt;strong&gt;new container&lt;/strong&gt; from an image.&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;starts an &lt;strong&gt;existing container&lt;/strong&gt;.&lt;/p&gt;

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




&lt;h1&gt;
  
  
  19. Restart a Container
&lt;/h1&gt;

&lt;p&gt;You can restart a container 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 restart my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  20. Remove a Container
&lt;/h1&gt;

&lt;p&gt;To delete a stopped 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 &lt;span class="nb"&gt;rm &lt;/span&gt;my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also remove a running container using:&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; &lt;span class="nt"&gt;-f&lt;/span&gt; my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Be careful with &lt;code&gt;-f&lt;/code&gt; because it forcefully removes the container.&lt;/p&gt;




&lt;h1&gt;
  
  
  21. View Container Logs
&lt;/h1&gt;

&lt;p&gt;One of the most useful troubleshooting commands is:&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;If the application inside the container is producing logs, this command lets you see them.&lt;/p&gt;

&lt;p&gt;You can also follow 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 &lt;span class="nt"&gt;-f&lt;/span&gt; my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-f&lt;/code&gt; means follow.&lt;/p&gt;




&lt;h1&gt;
  
  
  22. Execute a Command Inside a Container
&lt;/h1&gt;

&lt;p&gt;Sometimes you need to get inside a running 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 shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; my-nginx /bin/bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If Bash isn't available, you might use:&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;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; my-nginx /bin/sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;It allows you to execute a command inside an already running container.&lt;/p&gt;




&lt;h1&gt;
  
  
  23. Port Mapping
&lt;/h1&gt;

&lt;p&gt;Here's an important concept.&lt;/p&gt;

&lt;p&gt;Suppose Nginx is running inside a container on port &lt;code&gt;80&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That doesn't automatically mean you can access it through your host's port 80.&lt;/p&gt;

&lt;p&gt;You can map a host port to the container port:&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;--name&lt;/span&gt; my-nginx &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:80 nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The format is:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&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 port 8080
       |
       v
Container port 80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can then access Nginx through:&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;h1&gt;
  
  
  24. View Container Details
&lt;/h1&gt;

&lt;p&gt;Use:&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;This provides detailed information about the container, including things such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Network configuration&lt;/li&gt;
&lt;li&gt;Mounts&lt;/li&gt;
&lt;li&gt;Environment&lt;/li&gt;
&lt;li&gt;Container configuration&lt;/li&gt;
&lt;li&gt;IP information&lt;/li&gt;
&lt;li&gt;Runtime settings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's extremely useful when troubleshooting.&lt;/p&gt;




&lt;h1&gt;
  
  
  25. A Small Docker Practice
&lt;/h1&gt;

&lt;p&gt;Let's put some of these commands together.&lt;/p&gt;

&lt;p&gt;First download Nginx:&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;Run 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 &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; my-nginx &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:80 nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check that it's running:&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;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;p&gt;Check the 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;Enter 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 &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; my-nginx /bin/bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exit:&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;exit&lt;/span&gt;
&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;Finally 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 stop my-nginx
docker &lt;span class="nb"&gt;rm &lt;/span&gt;my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This small exercise gives you hands-on experience with the basic Docker lifecycle.&lt;/p&gt;




&lt;h1&gt;
  
  
  26. Docker's Basic Architecture
&lt;/h1&gt;

&lt;p&gt;At a high level, you can think about Docker 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 Registry
                       |
                       | pull
                       v
                +-------------+
                | Docker Image|
                +-------------+
                       |
                       | run
                       v
                +-------------+
                |  Container  |
                +-------------+
                       |
                       v
                  Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And when you create your own application:&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
                  v
            Docker Image
                  |
                  | docker run
                  v
             Container
                  |
                  v
             Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understanding these two flows will make many other Docker concepts easier later.&lt;/p&gt;




&lt;h1&gt;
  
  
  27. Why is Docker Important for DevOps?
&lt;/h1&gt;

&lt;p&gt;Docker became extremely important in DevOps because it makes application packaging and deployment more consistent.&lt;/p&gt;

&lt;p&gt;A typical workflow might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer
    |
    | writes code
    v
Dockerfile
    |
    | docker build
    v
Docker Image
    |
    | push
    v
Container Registry
    |
    | pull
    v
Server
    |
    | docker run
    v
Container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This fits naturally into CI/CD pipelines.&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;Code Change
     |
     v
CI Pipeline
     |
     v
Build Docker Image
     |
     v
Test Image
     |
     v
Push Image
     |
     v
Deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is one reason Docker is such an important technology to understand if you're moving toward DevOps.&lt;/p&gt;




&lt;h1&gt;
  
  
  28. Docker and Kubernetes
&lt;/h1&gt;

&lt;p&gt;If you're learning Kubernetes, understanding Docker concepts is still very useful.&lt;/p&gt;

&lt;p&gt;Kubernetes manages &lt;strong&gt;containers&lt;/strong&gt;, but Kubernetes itself is not simply "Docker."&lt;/p&gt;

&lt;p&gt;Modern Kubernetes clusters use a container runtime such as &lt;strong&gt;containerd&lt;/strong&gt; or &lt;strong&gt;CRI-O&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So think about the relationship 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
   |
   | helps you build/package/run containers
   v
Container Image
   |
   v
Container Runtime
   |
   v
Kubernetes
   |
   v
Manages containers across multiple machines
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Docker concepts such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Containers&lt;/li&gt;
&lt;li&gt;Registries&lt;/li&gt;
&lt;li&gt;Container networking&lt;/li&gt;
&lt;li&gt;Volumes&lt;/li&gt;
&lt;li&gt;Environment variables&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;are foundational concepts that will help you understand Kubernetes.&lt;/p&gt;




&lt;h1&gt;
  
  
  29. Docker Commands Cheat Sheet
&lt;/h1&gt;

&lt;p&gt;Here are the commands worth practicing first:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker --version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Check Docker version&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker pull nginx&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Download an image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker images&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List images&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker run nginx&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create and run a container&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker run -d nginx&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Run in background&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker ps&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List running containers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker ps -a&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List all containers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker stop &amp;lt;container&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Stop a container&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker start &amp;lt;container&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Start a stopped container&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker restart &amp;lt;container&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Restart a container&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker rm &amp;lt;container&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Remove a container&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker logs &amp;lt;container&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;View logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker exec -it &amp;lt;container&amp;gt; /bin/sh&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Execute a command inside container&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker inspect &amp;lt;container&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;View detailed container information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker build -t &amp;lt;name&amp;gt; .&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Build an image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker push &amp;lt;image&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Push an image to a registry&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Don't try to memorize all of these immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practice them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The commands will become familiar naturally.&lt;/p&gt;




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

&lt;p&gt;Docker can look complicated when you first encounter terms like images, containers, Dockerfiles, registries, volumes, networks, and containerization.&lt;/p&gt;

&lt;p&gt;But the fundamental idea is straightforward:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Build an image → create a container → run your application.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The basic workflow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
     |
     v
Dockerfile
     |
     | docker build
     v
Docker Image
     |
     | docker run
     v
Docker Container
     |
     v
Running Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once this workflow becomes clear, you can start learning more advanced Docker concepts such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker volumes&lt;/li&gt;
&lt;li&gt;Docker networks&lt;/li&gt;
&lt;li&gt;Environment variables&lt;/li&gt;
&lt;li&gt;Multi-stage builds&lt;/li&gt;
&lt;li&gt;Docker Compose&lt;/li&gt;
&lt;li&gt;Image optimization&lt;/li&gt;
&lt;li&gt;Container security&lt;/li&gt;
&lt;li&gt;Private registries&lt;/li&gt;
&lt;li&gt;CI/CD with Docker&lt;/li&gt;
&lt;li&gt;Docker and Kubernetes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Docker is not just another tool to memorize for a DevOps interview. The important thing is to understand &lt;strong&gt;why containers exist, how images become containers, and how Docker fits into the software delivery process&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's the foundation on which many modern DevOps and Kubernetes workflows are built.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devops</category>
      <category>docker</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
