Birinchi konteyner — docker run hello-world, nginx
Muammodan boshlaylik
Veb-server kerak — HTML sahifani brauzerda ko'rish uchun. An'anaviy yo'l: Nginx ni yuklab olish, o'rnatish, konfiguratsiya faylini topish, xizmatni ishga tushirish. Keyin o'chirish kerak bo'lsa — fayllar tizim bo'ylab sochilib qolgan.
Docker bilan — bitta buyruq. O'chirish — yana bitta buyruq, hech qanday iz qoldirmasdan.
Nginx ni ishga tushirish
docker run -d -p 8080:80 --name mening-nginx nginx
Brauzerda http://localhost:8080 ni oching:
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working.
To'liq ishlaydigan veb-server — va Nginx ni kompyuterga o'rnatmadingiz.
| Qism | Ma'nosi |
|---|---|
docker run |
Image dan yangi konteyner yaratib, ishga tushirish |
-d |
Detached — orqa fonda; terminal bo'shaydi |
-p 8080:80 |
Kompyuterning 8080 porti → konteynerning 80 porti |
--name mening-nginx |
Konteyner nomi (bo'lmasa — tasodifiy: quirky_turing) |
nginx |
Image nomi |
Konteynerlar ro'yxati
docker ps
CONTAINER ID IMAGE COMMAND STATUS PORTS NAMES
a3f9c2b1d4e5 nginx "/docker-entrypoint.…" Up 2 minutes 0.0.0.0:8080->80/tcp mening-nginx
CONTAINER ID— buyruqlarda birinchi 3-4 belgisi yetarliSTATUS—Up= ishlayaptiPORTS— port ulanishi
Loglar
Sahifani bir necha marta yangilang:
docker logs mening-nginx
172.17.0.1 - - [05/Nov/2026:10:15:32 +0000] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 ..."
Real vaqtda kuzatish: docker logs -f mening-nginx (Ctrl + C — chiqish).
O'z sahifangiz
Papka yarating, ichida index.html:
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Docker</title></head>
<body style="font-family: system-ui; text-align: center; padding: 50px;">
<h1>Salom, Docker! 🐳</h1>
<p>Bu sahifa konteyner ichidagi Nginx dan kelmoqda.</p>
</body>
</html>
Eski konteynerni o'chirib, yangisini papka bilan ishga tushiring:
docker rm -f mening-nginx
docker run -d -p 8080:80 --name mening-nginx -v "$(pwd)":/usr/share/nginx/html:ro nginx
-v "$(pwd)":/usr/share/nginx/html:ro — joriy papkani konteynerdagi Nginx sahifalar papkasiga ulash (ro — faqat o'qish). Bu bind mount (20-dars).
[!INFO] PowerShell da
$(pwd)o'rniga${PWD}, CMD da —%cd%. WSL terminalida —$(pwd).
http://localhost:8080 — sizning sahifangiz. index.html ni o'zgartirib, brauzerni yangilang — o'zgarish darhol ko'rinadi.
Bir vaqtda bir nechta
docker run -d -p 8081:80 --name nginx-2 nginx
docker run -d -p 8082:80 --name nginx-3 nginx
Uchta mustaqil veb-server, turli portlarda, har biri o'z izolyatsiyalangan muhitida.
Ichiga kirib sinash
docker run -it --rm ubuntu bash
root@7c2a9e1f3b4d:/# cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04 LTS"
root@7c2a9e1f3b4d:/# exit
-it— interaktiv terminal--rm— chiqqanda konteyner avtomatik o'chirilsinbash— konteynerda bajariladigan buyruq
Bir soniyada to'liq Ubuntu. Linux buyruqlarini o'rganish uchun ideal "qum qutisi" — hech narsani buzishdan qo'rqmang, exit va hammasi yo'qoladi.
Boshqa tillar — o'rnatmasdan:
docker run -it --rm python:3.13 python
docker run -it --rm node:22 node
docker run --rm php:8.4-cli php -r 'echo PHP_VERSION;'
Tozalash
docker rm -f mening-nginx nginx-2 nginx-3
-f — ishlayotgan bo'lsa ham to'xtatib o'chirish. Image lar kompyuterda qoladi — keyingi safar yuklab olish shart emas:
docker images
Nima uchun shunday?
Nima uchun -p 8080:80 kerak — Nginx konteynerda 80-portda ishlayapti-ku?
Chunki konteyner izolyatsiyalangan: uning o'z tarmog'i va portlari bor. Konteynerdagi 80-port — uning ichki porti, kompyuteringizniki emas. Shuning uchun o'nta konteyner hammasi o'z ichida 80-portni ishlatishi mumkin, to'qnashuvsiz. Tashqaridan kirish kerak bo'lsa — siz aniq aytasiz: "kompyuterning 8080 portini konteynerning 80 portiga ula". Hech narsa tasodifan ochiq qolmaydi.
Xulosa
Eslab qoling:
docker run -d -p 8080:80 --name nom image— fonda, port bilan, nomlidocker ps— ishlayotgan konteynerlar;docker logs [-f] nom— loglar-v papka:konteyner_yo'li— fayllarni ulashdocker run -it --rm image bash— ichiga kirish, chiqqanda o'chadidocker rm -f nom— to'xtatib o'chirish; image lar qoladi
Keyingi dars
4-dars: Image va konteyner — farqi, hayot sikli