Ship your machine, not your excuses.
The death of “but it works on my machine.” 🐳
DevOps & Platform Engineer. My actual job: make sure code that works on one machine works on ten thousand.
I build platforms that let teams ship with confidence — because “great infrastructure should be invisible.”
…and it all started with an app that only ran on my laptop — just like yours. 😄
Every one of these started exactly where you are tonight. The path is real — and reachable. 🧗
This is interactive — shout answers, laugh at the memes, ask anything. By the end, you'll containerize your own project.
It has killed demos, delayed launches, and started 30 years of war between developers and ops. Everyone has said it. Today, we kill it. 💀
4 laptops · 4 operating systems · 3 versions of Python · 1 deadline in 6 hours. Not a bug — a horror movie.
Your app secretly leans on a hundred invisible things that just happen to live on your laptop. Clean machine → ghosts gone → app dies.
Everything below came “for free” on your laptop. The fix isn't “be careful” — ship the whole iceberg. 🚢
“It works! Ship it!” throws code over the wall →
Nobody could reproduce anyone's setup. Endless blame.
“…it doesn't run here.” 3 a.m. pages. Sadness.
In 2013 a little whale showed up and knocked the wall down.
Seal the code + its entire haunted environment into one box — and run that exact box anywhere on Earth.
Docker is a tool that packs your app into a container — a sealed box that runs identically everywhere: your laptop, your friend's, a server, the cloud.
Mom packs the food, the exact spices, the right rice — and seals it. Open it in the hostel, in class, on the bus: same taste, every time.
Renting a whole apartment — kitchen, bathroom, the works — for one houseplant.
Just the shelf. Borrows the building's plumbing (your OS).
Your laptop runs 50 containers for breakfast — but 2 VMs and it starts sweating. 🥵
Carries its own entire operating system. That's the gigabytes.
Shares the building's kitchen & plumbing (the host OS kernel).
…what's unique to your app. Starts instantly, weighs almost nothing.
Shared plumbing = cheaper, lighter, faster. That's the whole trick. 🔧
One recipe → cook endless identical dishes → share it with the planet. 🌐
Built bottom-up in layers. The magic: layers are cached and shared.
A Dockerfile is a to-do list for Docker, read top to bottom. That's it.
FROM python:3.12-slim # a mini computer WORKDIR /app # go to my folder COPY requirements.txt . RUN pip install -r requirements.txt COPY . . # bring my code CMD ["python", "app.py"] # please work 🙏
docker build -t myapp . -t myapp → name it "myapp" . → recipe is in THIS folder ✔ Step 1/6 : FROM python:3.12-slim ✔ Successfully built & tagged myapp:latest 🍰
One command turned your messy project into a portable, frozen image.
docker run myapp ✔ Running on http://localhost:8000 ✔ …exactly the same on EVERY machine 🌍
Your laptop · Rakib's · the cursed lab PC · a server in Singapore — identical. “Works on my machine” is now physically impossible.
A container is a sealed room — by default, no doors. The -p flag installs one.
docker run -p 8000:8000 myapp └──┬──┘ your laptop : container ✔ open http://localhost:8000 🎉
Lists your live containers right now.
Read output & crash reasons. You'll live here.
Open a shell inside the running box.
Politely stop the container.
90% of debugging is just reading the logs. Befriend docker logs early. 🤝
Delete a container and everything inside vanishes — on purpose. So where does your database live?
docker run -v mydata:/var/lib/db \ postgres # -v mydata → a notebook that # OUTLIVES the container 📓 ✔ delete container → data is safe
Docker Hub is the world's shelf of ready-made containers. push yours up, pull anyone's down.
docker push amdadul/myapp ✔ pushed to Docker Hub 🌍 # now, anyone, anywhere: docker run amdadul/myapp ✔ it just… works. ✨
docker compose = one file for the whole gang (app + database + cache), one command to launch them all, already wired together.
Teammate clones → runs one command → gets your exact setup, database and all. The dream. 😌
services: app: build: . ports: ["8000:8000"] db: image: postgres:16 docker compose up # launches EVERYTHING 🚀
You COPY'd node_modules, .git & cat photos. Add a .dockerignore.
App runs, browser empty, you panic. Open the door.
Deleted the container, forgot the volume. RIP database.
“latest” silently changed. Pin real versions: :3.12.
Every single one of us shipped a 2GB image once. It's a rite of passage. 🎓
Once your app is a container, the whole cloud-native world opens up — and it all sits on top of what you just learned.
Runs thousands of containers & auto-heals crashes at 3am.
Robots build & ship your container on every git push.
Run your container at planet scale — AWS, GCP, Azure.
You didn't learn a tool today. You learned the foundation of the whole industry.
“Docker” on a CV = instant green flag for internships.
Your project runs on the professor's PC. Every time.
K8s, CI/CD, cloud jobs — all built on containers.
The basics? Honestly, one focused weekend.
Docker is the #1 skill in DevOps internship posts. You're one weekend from your CV. 🚀
Docker Desktop. 10 min, one download.
Add a Dockerfile to a project you already have.
build + run. Feel the “aha.”
Push to Docker Hub. Send a friend one command.
docker build -t myapp . # bake the image 🍰 docker run -p 8000:8000 myapp # run + open the door 🚪 docker ps # what's running? 👀 docker logs <id> # why did it break? 📜 docker push amdadul/myapp # share with the world 🌍 docker compose up # launch the whole squad 🚀
Six commands. That's genuinely enough to be dangerous. 😎
“Works on my machine” — your app dragged invisible ghosts.
A container seals code + environment into one portable box.
Build → run → share → and the whole cloud opens up.
Don't ship your code and pray. Ship the whole box. 🐳
Thank you, Jatiya Kabi Kazi Nazrul Islam University! 🙌
Now go ship something. Questions? Let's talk — and DM me anytime.
Ask me anything — Docker, DevOps, Kubernetes, certs, careers, or how I ruined a production server once. 😅