Let's talk about the dev mystery box: docker, that I hate
Docker makes deploying apps easy — maybe too easy. Here’s how to install it on your PC and VPS, run your first container, and remove it when you’ve had enough. Love it or hate it, Docker is here to stay — even if it feels like development on training wheels.

You know those cooking shows where the chef gets a mystery box of ingredients and has to make something edible? Docker is kind of like that — except the box is already preloaded with a fully cooked meal, plated nicely, and served with a glass of wine.
Sounds great, right?
Well… yeah. But also, meh.
Docker is one of the most loved developer tools of the last decade — a containerization platform that lets you package an app with everything it needs so it runs anywhere. It’s fast, convenient, and makes deployment stupidly simple. And that’s exactly why I kind of hate it.
Let me first tell you what docker is about...
Docker is an open-source platform that lets you package an application and all its dependencies into a single, lightweight unit called a container. Unlike virtual machines, containers share the host operating system’s kernel, making them faster, more efficient, and portable across environments. This means you can build an app on your laptop, ship it to a VPS like Hostinger, or deploy it to the cloud — and it will run exactly the same everywhere. With Docker, developers avoid the classic “it works on my machine” problem, streamline deployments, and simplify scaling. Ok, now that you learned what it is...
Why I hate docker but still use It
Let’s get this straight — Docker is amazing:
- It’s fast to deploy
- Works on any OS (Windows, Mac, Linux, cloud VPS)
- Has prebuilt images for everything from MySQL to Ghost blogs to Node.js
But here’s my beef:
- It’s too easy. You don’t really learn what’s happening under the hood.
- Everyone is just cloning someone else’s work from Docker Hub. It’s like GitHub for “just run my stuff, don’t ask me how it works, it just does...”
- If something breaks, debugging can feel like opening a Russian nesting doll of YAML files, network configs, and mysterious entrypoints.
It’s like giving a Formula 1 car to someone who’s only ever driven go-karts — sure, you can use it, but will you actually understand it?
Nevermind, let's use it...
Installing Docker
On PC (Windows/Mac/Linux)
- Go to: Docker Desktop
- Download the installer for your OS.
- Run it, accept the EULA, and let it install.
- Once installed, open a terminal and run:docker --version
If it shows a version number, you’re in, use it.
On VPS (Linux)
Let’s use Ubuntu as an example:
#1 Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
#2 - Add the repository to apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#3 - Update the repo
sudo apt-get update
#4 - Install the Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#5 - Run dummy container to see if everything works
sudo docker run hello-world
Yeey, u did it!
And now...how to use docker
Let’s run a simple NGINX web server in Docker:
docker run --name mynginx -p 8080:80 -d nginx
Now go to http://your-server-ip:8080
and boom — NGINX is running without installing a single package manually.
Want to stop it?
docker stop mynginx
Cleaning up docker (The must part)
Sometimes you just want Docker gone — completely.
Stop all running containers:
docker stop $(docker ps -q)
Remove all containers:
docker rm $(docker ps -a -q)
Remove all images:
docker rmi $(docker images -q)
Remove all volumes:
docker volume rm $(docker volume ls -q)
Remove docker itself (thank me later):
sudo apt purge docker-ce docker-ce-cli containerd.io -y
sudo rm -rf /var/lib/docker
Why you’ll love it anyway
Even if I joke about Docker being “development with training wheels,” it’s still one of the most useful tools out there. It’s:
- Perfect for testing software fast without polluting your system
- Great for deployment pipelines
- A lifesaver when setting up databases and services on VPS machines
If you value your time more than your deep knowledge of every dependency, Docker is your best friend.
Just… don’t forget to occasionally build something from scratch. You’ll appreciate Docker even more when you come back.