Docker kursi
"Mening kompyuterimda ishlaydi" muammosiga barham. Konteynerlar, Dockerfile, Compose va loyihani serverga chiqarish.
Boshlang'ich → O'rta · 45 ta dars · ~6 hafta
Mavzular: Image va konteyner, Dockerfile, Qatlamlar va kesh, Multi-stage build, Volume, Tarmoq, Docker Compose, Node, PHP, Python loyihalar, Xavfsizlik, CI/CD va deploy
Kirish
- Docker nima? — konteyner, virtual mashinadan farqi
- O'rnatish — Docker Desktop, Linux, WSL 2
- Birinchi konteyner — docker run hello-world, nginx
- Image va konteyner — farqi, hayot sikli
- Docker Hub — tayyor image lar, teglar, rasmiy image lar
Konteynerlar bilan ishlash
- docker run — -d, --name, --rm, -it
- Boshqaruv — ps, stop, start, rm, prune
- Ichiga kirish va loglar — exec, logs, inspect
- Portlar — -p, konteynerga brauzerdan kirish
- Muhit o'zgaruvchilari — -e, --env-file
- 1-2 bo'lim mashqlari — MySQL va Adminer konteynerda
Dockerfile — o'z image ingiz
- Dockerfile asoslari — FROM, COPY, RUN, CMD, docker build
- Instruksiyalar — WORKDIR, ENV, ARG, EXPOSE, USER, ENTRYPOINT
- Qatlamlar va kesh — tez build uchun tartib
- .dockerignore — keraksiz fayllarni chiqarib tashlash
- Multi-stage build — kichik va xavfsiz image
- Image ni optimallash — alpine, slim, distroless
- 3-bo'lim mashqlari — Node.js API uchun Dockerfile
Ma'lumotlarni saqlash
- Volume — konteyner o'chsa ham ma'lumot qoladi
- Bind mount — kodni konteynerga ulash, hot reload
- Volume backup va tiklash, tmpfs
- Ma'lumotlar bazasi konteynerda — MySQL, PostgreSQL, init skriptlar
Tarmoq
- Docker tarmog'i — bridge, host, none
- O'z tarmog'ingiz — konteynerlar nom bilan topishadi
- Tarmoq izolyatsiyasi — nimani tashqariga ochish kerak
Docker Compose
- Docker Compose nima — bir buyruqda butun loyiha
- compose.yaml — services, ports, volumes, networks
- depends_on va healthcheck — ishga tushish tartibi
- Compose da o'zgaruvchilar — .env, env_file, secrets
- Ishlab chiqish uchun Compose — hot reload, watch
- Bir nechta muhit — override fayllar va profiles
- 6-bo'lim mashqlari — Node.js + MySQL + Redis
Real loyihalar
- Node.js / NestJS loyihasini Docker ga o'tkazish
- PHP va Laravel — PHP-FPM, Nginx, Composer
- Python — FastAPI / Django konteynerda
- React / Vite frontend — build va Nginx bilan berish
- Reverse proxy — Nginx / Caddy, domen va HTTPS
Production
- Registry — Docker Hub, GHCR ga image yuklash, teglash
- Xavfsizlik — root siz, maxfiy ma'lumotlar, image skanerlash
- Resurslar — xotira va CPU chegarasi, restart siyosati
- CI/CD — GitHub Actions bilan avtomatik build
- VPS ga deploy — serverga o'rnatish va yangilash
- Loglar va monitoring — logging driver, stats, Uptime
Keyingi qadam
- Kubernetes ga kirish — qachon Docker yetmaydi
- Yakuniy loyiha — to'liq stack ni konteynerlash va deploy