DEV Community

Cover image for Getting Started with Docker: How to Containerize Your First Application
Yash Sonawane
Yash Sonawane

Posted on • Edited on

2 2 2 2 2

Getting Started with Docker: How to Containerize Your First Application

🚀 Why Docker?

Ever heard someone say, "It works on my machine" while debugging a nightmare in production? Yeah, we've all been there. Docker eliminates this problem by containerizing your applications—ensuring they run the same everywhere, from your local laptop to a massive cloud deployment.

If you're a DevOps enthusiast or a developer aiming to streamline deployments, mastering Docker is a game-changer. So, let’s cut the fluff and jump straight into containerizing your first application.


🛠 Step 1: Install Docker

Before diving in, you need Docker installed. If you haven’t already:

  • Windows & Mac: Install Docker Desktop
  • Linux: Use the following commands to install:
  sudo apt update
  sudo apt install docker.io -y
  sudo systemctl enable --now docker
Enter fullscreen mode Exit fullscreen mode

Verify installation:

  docker --version
Enter fullscreen mode Exit fullscreen mode

📦 Step 2: Create Your First Application

Let’s keep it simple with a Python Flask app.

1️⃣ Create a new project folder:

mkdir my-docker-app && cd my-docker-app
Enter fullscreen mode Exit fullscreen mode

2️⃣ Create app.py:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Docker!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
Enter fullscreen mode Exit fullscreen mode

3️⃣ Add requirements.txt:

flask
Enter fullscreen mode Exit fullscreen mode

🛳 Step 3: Write a Dockerfile

A Dockerfile is a blueprint for creating Docker containers. Create a file named Dockerfile (no extension) and add:

# Use an official Python runtime as a parent image
FROM python:3.9

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . .

# Install any dependencies
RUN pip install -r requirements.txt

# Make port 5000 available
EXPOSE 5000

# Run the application
CMD ["python", "app.py"]
Enter fullscreen mode Exit fullscreen mode

⚙️ Step 4: Build and Run the Container

Let’s bring this to life! Run the following command to build the image:

docker build -t my-flask-app .
Enter fullscreen mode Exit fullscreen mode

Once the image is built, start a container:

docker run -p 5000:5000 my-flask-app
Enter fullscreen mode Exit fullscreen mode

🎉 Boom! Your Flask app is now running inside a Docker container. Open http://localhost:5000 in your browser to see it in action.


🔥 Step 5: Share Your Container (Optional but Cool)

Want to share your containerized app? Push it to Docker Hub:

docker login
Enter fullscreen mode Exit fullscreen mode
docker tag my-flask-app your-dockerhub-username/my-flask-app
Enter fullscreen mode Exit fullscreen mode
docker push your-dockerhub-username/my-flask-app
Enter fullscreen mode Exit fullscreen mode

Now, anyone can run your app with:

docker run -p 5000:5000 your-dockerhub-username/my-flask-app
Enter fullscreen mode Exit fullscreen mode

📌 Step 6: Manage Containers

Now that you have a running container, let’s explore some useful commands:

  • List running containers:
  docker ps
Enter fullscreen mode Exit fullscreen mode
  • List all containers (including stopped ones):
  docker ps -a
Enter fullscreen mode Exit fullscreen mode
  • Stop a running container:
  docker stop <container_id>
Enter fullscreen mode Exit fullscreen mode
  • Remove a container:
  docker rm <container_id>
Enter fullscreen mode Exit fullscreen mode

🏗 Step 7: Use Docker Compose

For multi-container applications, Docker Compose is your best friend. Create a docker-compose.yml file:

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
Enter fullscreen mode Exit fullscreen mode

Run your app with:

docker-compose up
Enter fullscreen mode Exit fullscreen mode

🧹 Step 8: Clean Up Docker Resources

Docker can consume disk space quickly. Use these commands to clean up:

  • Remove all stopped containers:
  docker container prune
Enter fullscreen mode Exit fullscreen mode
  • Remove unused images:
  docker image prune -a
Enter fullscreen mode Exit fullscreen mode
  • Remove all unused volumes:
  docker volume prune
Enter fullscreen mode Exit fullscreen mode

🔑 Step 9: Run Containers in Detached Mode

Running a container in the background ensures it doesn’t block your terminal:

docker run -d -p 5000:5000 my-flask-app
Enter fullscreen mode Exit fullscreen mode

Check logs of a running container:

docker logs <container_id>
Enter fullscreen mode Exit fullscreen mode

🔥 Step 10: Deploy Containers to the Cloud

Once you're comfortable running containers locally, try deploying them to the cloud using:

  • AWS ECS (Elastic Container Service)
  • Google Cloud Run
  • Azure Container Apps
  • Kubernetes for large-scale orchestration

💡 Final Thoughts

Docker is a must-have skill for modern developers and DevOps engineers. With just a few commands, you’ve successfully containerized your first app. Now, imagine scaling this up with Kubernetes, CI/CD, and cloud deployments! 🚀

What’s Next?

  • Try containerizing a Node.js or Go app.
  • Learn about Docker Compose for multi-container apps.
  • Dive into Kubernetes to orchestrate containers at scale.

Found this helpful? Share your thoughts below or flex your first containerized app in the comments! 💬🔥

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

👋 Kindness is contagious

Found this post helpful? A ❤️ or a friendly comment is always appreciated!

Okay