DEV Community

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

Posted on

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! 💬🔥

Top comments (0)