Logo

dev-resources.site

for different kinds of informations.

What the Heck is Docker?

Published at
12/2/2024
Categories
docker
containers
containerapps
Author
uwancha
Categories
3 categories in total
docker
open
containers
open
containerapps
open
Author
7 person written this
uwancha
open
What the Heck is Docker?

"What's Docker? What's a container? What's an image? Bla bla bla..." These are the questions my colleagues always ask me when they start learning Docker. And, to be honest, I asked the same questions when I was first introduced to it.

But you know what? Answers like, "Docker is a platform where..." didn’t really satisfy me. Sure, those answers are correct, but they didn't help me understand Docker. I had deeper questions like:

  • Why should I use Docker?
  • What’s containerization exactly?
  • How is it different from virtualization?

If you’re like me, these are the questions that matter. So, let’s break it down together.

Is "What’s Docker?" the Right Question?

Yes, it’s a valid question. But here’s the catch: the answer to "What’s Docker?" is just the tip of the iceberg. If you ask someone this, they’ll probably say:

"Docker is a platform for developing, shipping, and running applications in containers."

Cool, but... what does that even mean?

To really understand Docker, you need to ask a better question: "What is containerization?"

What’s Containerization?

Here’s a textbook definition:

"Containerization is the process of packaging an application, along with its dependencies (libraries, configuration files, and binaries), into a lightweight, portable, and consistent unit called a container."

Sounds fancy, right? But does it really help you visualize what containerization is? Probably not. Let’s dig deeper.

Concepts You Need to Know to Understand Containerization

Before approaching containerization, you need to understand some core concepts. Without these, Docker and containers might feel like magic. Here’s what you should explore first:

  1. The Software Deployment Process Think about how applications are traditionally deployed. In the "pre-container" world:
    • You write code on your local machine.
    • Then, you configure it to work on a server.
    • But wait! The server needs specific versions of libraries, dependencies, and tools to run your app.
    • Uh-oh, it works on your local machine but crashes in production because the environments aren’t identical.

This is the classic "It works on my machine!" problem. Containerization solves this by ensuring that your application and its dependencies are bundled into a single, portable unit (the container) that can run anywhere.

  1. Virtualization

    To understand containers, you need to understand how virtualization works:

    • Virtual Machines (VMs): These are like mini-computers running inside your actual computer. They emulate an entire operating system (OS) and are great for isolating applications.
    • Containers: Unlike VMs, containers don’t emulate an entire OS. Instead, they share the host OS's kernel while isolating your application and its dependencies. This makes containers much lighter and faster than VMs.
  2. Containerization

    Now that you understand virtualization( of course just a tip of it, dig deep into it for more understanding), you can appreciate what containerization does:

    • It isolates your application, just like a VM.
    • It’s lightweight and portable, unlike a VM.
    • It ensures consistency across development, staging, and production environments.

How Docker Fits Into the Picture

Docker is the tool that makes containerization easy. It provides:

  • A way to create containers (using Docker images).
  • A way to share containers (via Docker Hub or private registries).
  • A way to run containers (on your local machine, servers, or even in the cloud).

So in simple terms: Docker makes containerization accessible to everyone.

If you want to understand Docker, start by understanding containerization. And if you want to understand containerization, take some time to learn about software deployment and virtualization first. Once you’ve got the basics down, Docker (and all its buzzwords like "containers" and "images") will start to make sense.

Resources that helped me

I couldn't remember all the resources that helped me, but here are some of them(None of the links are affiliated):

Thanks for reading!

containerapps Article's
30 articles in total
Favicon
Tackling CPU Throttling in Kubernetes for Better Application Performance
Favicon
What the Heck is Docker?
Favicon
A Step-by-Step Guide to CI/CD Pipeline for Angular App with Azure Container Apps
Favicon
Cool SHIT you can do with docker
Favicon
Deploying a stateless container on cloud run
Favicon
Dockerize Your Development: Build Reusable Features, Faster
Favicon
Docker For Beginners
Favicon
Preventing Out-of-Memory (OOM) Kills in Kubernetes: Tips for Optimizing Container Memory Management
Favicon
How and why did we improve our API hosting?
Favicon
Deploying a Java Azure Function on Azure Container Apps
Favicon
AWS App Runner: A quick start deploying Docker Container to AppRunner
Favicon
Deploying a Static Website with Docker: A Comprehensive Guide
Favicon
Day 12 of my 90-Devops Journey: CI/CD for Containerized Applications: A GitLab Guide
Favicon
How to containerize your web app- a beginner-friendly tutorial for Dockerfile
Favicon
Use LLMs in Java. An example with Merlinite, Quarkus, and Podman Desktop AI Lab
Favicon
How to Build a Container Image Running on Docker Hub.
Favicon
Android Encrypted Shared Preference access issue from new container
Favicon
What is Docker ?: Understanding the Concept of Containerization.
Favicon
How Azure Container Apps Simplify the Cloud Deployment Process
Favicon
docker compose : top level object must be mapping
Favicon
Deploying Containers with Security in mind (Beginner)
Favicon
Containerizing your Go application by using Docker
Favicon
Containerizing your Go application using Docker
Favicon
Revolutionize Your Dev Workflow: Containerization and Linux VPS Hosting for Streamlined Software Development
Favicon
Java application latency reduction and pitfalls
Favicon
A Beginner's Tour of NodePort, LoadBalancer, and Ingress Services
Favicon
Azure Container Apps: Zero to Hero
Favicon
Dev Container for React Native with Expo
Favicon
How to authenticate and register GitHub Runners hosted in Azure Container Apps with GitHub App via Azure Key Vault
Favicon
The Orchestration of The Ring

Featured ones: