Docker Introduction — Learn Containers with Real DevOps Projects (Beginner to Advanced)
🚀 Docker Introduction — Learn Containers with Real DevOps Projects (Beginner to Advanced)
📌 Introduction — Understand the Real DevOps Problem
In real-world IT environments, one of the most common issues teams face is this: a developer writes code that works perfectly on their local machine, but when the same code is deployed to a server or production environment, it fails or behaves unexpectedly.
This happens due to differences in system configurations, missing dependencies, or environment mismatches. This is exactly the problem Docker is designed to solve.
Docker ensures that an application runs the same way everywhere — whether it’s your laptop, a testing server, or production. In simple terms: “Jo tumhare system pe chal raha hai, wahi production me bhi chalega — without surprises.”
🧠 Docker Concept — Simple + Real Understanding
Let’s understand Docker with a simple analogy. Imagine you pack your lunch in a tiffin box. That box keeps everything organized, safe, and portable — you can carry it anywhere without worrying about mixing or damage.
Similarly, Docker packages your application along with all its dependencies into a container. This container can run anywhere without any changes.
In DevOps terms, Docker is a containerization platform that bundles:
- Application code
- Libraries
- Dependencies
- Runtime environment
All of this runs inside an isolated container — meaning no conflicts with other applications.
⚙️ How Docker Works Internally (Step-by-Step Flow)
To understand Docker deeply, let’s walk through what actually happens step-by-step:
First, a developer writes the application code and defines its environment using a Dockerfile. Then Docker builds an image from that Dockerfile, which acts as a blueprint. After that, a container is created from the image, and that container runs the application.
This entire process ensures consistency, repeatability, and fast deployment — which are key goals in DevOps.
💻 Docker Installation on Ubuntu (Step-by-Step with Explanation)
Step 1: Update the system packages so that we install the latest versions available.
sudo apt update
Step 2: Install Docker Engine which allows us to run containers.
sudo apt install docker.io -y
Step 3: Start the Docker service so it begins running in the background.
sudo systemctl start docker
Step 4: Enable Docker to start automatically after system reboot.
sudo systemctl enable docker
Step 5: Verify that Docker is installed correctly.
docker --version
Step 6: Fix permission issue (optional but important)
sudo usermod -aG docker $USER
🧪 Hands-on Practical — Running Your First Container
Let’s start with the simplest possible container.
docker run hello-world
This command pulls a small test image, creates a container, and prints a success message. Internally, Docker checks if the image exists locally; if not, it downloads it and runs it.
Now let’s run a real web server using Nginx:
docker run -d -p 8080:80 nginx
Here, -d runs the container in the background and -p maps port 8080 of your machine to port 80 of the container. Now open your browser and go to:
http://localhost:8080
You will see the Nginx welcome page — which means your container is successfully running.
🔥 Real-World Example — Static Website Deployment (Full Explanation)
Scenario: A startup wants to quickly deploy a landing page without spending time on server setup.
Step 1: Create a project directory where your website files will be stored.
mkdir website && cd website
Step 2: Create a basic HTML file.
nano index.html
Add some content like:
<h1>Welcome to DevOps World 🚀</h1>
Step 3: Run an Nginx container.
docker run -d -p 8080:80 nginx
Step 4: Copy your HTML file into the container.
docker cp index.html <container_id>:/usr/share/nginx/html/
Step 5: Open your browser and visit http://localhost:8080. Your custom website is now live.
👉 Real understanding: Instead of setting up a full web server manually, you just ran one command and deployed your site instantly.
⚠️ Common Errors & Troubleshooting
Error: Port already in use
sudo lsof -i :80
Error: Permission denied
sudo usermod -aG docker $USER
Error: Container stops immediately
docker logs <container_id>
🧠 DevOps Interview Questions
Q: What is Docker?
A: A containerization platform that packages applications with dependencies.
Q: Difference between Image and Container?
A: Image is a blueprint, container is a running instance.
Q: What is port mapping?
A: Connecting host port to container port.
📌 Summary
In this chapter, you didn’t just learn what Docker is — you understood how it solves real-world problems, how to install it, and how to run containers practically.
👉 If you’ve followed along and executed these commands, you’ve already taken your first real step into DevOps.
🔜 Next Chapter
In the next chapter, we will go deeper into Docker Images and Dockerfile, where you will learn how to build your own custom images and optimize them for production environments.