O'rnatish — Docker Desktop, Linux, WSL 2
Muammodan boshlaylik
Docker konteynerlari Linux yadrosini ishlatadi (1-dars). Serverlar — deyarli doim Linux, u yerda muammo yo'q. Lekin dasturchilarning ko'pchiligi Windows yoki macOS da ishlaydi. Ularda Docker qanday ishlaydi?
Javob: yengil Linux virtual mashina yashirin holda ishga tushiriladi, Docker esa uning ichida ishlaydi. Siz buni deyarli sezmaysiz.
Windows
1. WSL 2
WSL 2 (Windows Subsystem for Linux) — Windows ichida haqiqiy Linux yadrosi. Docker uning ustida ishlaydi.
PowerShell (administrator sifatida):
wsl --install
Kompyuterni qayta yoqing. Ubuntu o'rnatiladi va foydalanuvchi nomi/parol so'raladi.
wsl --version
wsl -l -v # VERSION ustunida 2 bo'lishi kerak
[!INFO] BIOS da virtualizatsiya (Intel VT-x / AMD-V) yoqilgan bo'lishi kerak. Ko'p kompyuterlarda standart yoqilgan. "Virtualization not enabled" xatosi bo'lsa — BIOS sozlamalaridan yoqing.
2. Docker Desktop
https://www.docker.com/products/docker-desktop/ dan yuklab, o'rnating. O'rnatishda "Use WSL 2 instead of Hyper-V" belgilangan bo'lsin.
Docker Desktop o'z ichiga oladi:
- Docker Engine (WSL 2 ichida)
dockervadocker composebuyruqlari (PowerShell da ham, WSL da ham)- Grafik interfeys: konteynerlar, image lar, volume lar
Tezlik maslahati
Loyiha fayllarini WSL ichida saqlang (\\wsl$\Ubuntu\home\ism\loyihalar), C:\ da emas. Windows fayl tizimi va WSL o'rtasidagi o'tish sekin — npm install va hot reload 5-10 barobar sekinroq bo'lishi mumkin.
VS Code — WSL kengaytmasi bilan: WSL terminalida code ..
macOS
https://www.docker.com/products/docker-desktop/ — Apple Silicon (M seriyali) yoki Intel versiyasini tanlang. Yoki Homebrew:
brew install --cask docker
Docker.app ni ochib, ishga tushishini kuting (yuqori panelda kit belgisi).
Yengilroq muqobillar: OrbStack, Colima.
[!INFO] Apple Silicon da image lar
arm64arxitekturasida. Rasmiy image larning ko'pchiligi ikkala arxitekturani qo'llab-quvvatlaydi. Faqatamd64li eski image lar emulyatsiya orqali (sekinroq) ishlaydi:--platform linux/amd64.
Linux (Ubuntu)
Linux da Docker Desktop shart emas — Docker Engine to'g'ridan-to'g'ri:
curl -fsSL https://get.docker.com | sh
# sudo siz ishlatish uchun
sudo usermod -aG docker $USER
newgrp docker # yoki tizimdan chiqib-kirish
Serverlarda rasmiy hujjatdagi apt repozitoriy usulini qo'llash tavsiya etiladi (docs.docker.com/engine/install/ubuntu). Skript — ishlab chiqish mashinalari uchun qulay.
[!WARNING]
dockerguruhidagi foydalanuvchi amalda root huquqlariga ega: konteyner orqali butun fayl tizimiga kirish mumkin. Serverda bu guruhga faqat ishonchli foydalanuvchilarni qo'shing.
Tekshirish
docker --version
docker compose version
docker run hello-world
Oxirgi buyruq natijasi:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
...
Hello from Docker!
This message shows that your installation appears to be working correctly.
Docker:
hello-worldimage ni kompyuterda qidirdi — topmadi- Docker Hub dan yuklab oldi
- Undan konteyner yaratdi va ishga tushirdi
- Konteyner xabarni chiqardi va to'xtadi
docker compose va docker-compose
docker compose up # ✅ yangi — Docker ga plagin sifatida o'rnatilgan (v2)
docker-compose up # eski alohida dastur (v1) — endi qo'llab-quvvatlanmaydi
Eski maqolalarda tire bilan yozilgan — ma'nosi bir xil. Bu kursda — bo'sh joy bilan.
Resurslarni sozlash
Docker Desktop → Settings → Resources:
- Memory — kompyuterda 16 GB bo'lsa, Docker ga 4-6 GB yetarli
- Disk — image va volume lar tez joy egallaydi; vaqti-vaqti bilan tozalang (7-dars)
Windows da WSL xotirasini cheklash — %UserProfile%\.wslconfig:
[wsl2]
memory=6GB
processors=4
Tez-tez uchraydigan muammolar
Cannot connect to the Docker daemon — Docker ishlamayapti. Docker Desktop ni oching; Linux da sudo systemctl start docker.
permission denied ... docker.sock (Linux) — docker guruhiga qo'shilmagansiz yoki qayta kirmagansiz.
WSL 2 installation is incomplete — wsl --update.
Docker Desktop juda ko'p xotira yeyapti — .wslconfig bilan cheklang, ishlatilmayotgan konteynerlarni to'xtating.
Nima uchun shunday?
Nima uchun Windows va macOS da Docker virtual mashina ichida ishlaydi — 1-darsda "konteyner VM emas" dedik-ku?
Konteynerlar Linux yadrosining imkoniyatlariga (namespaces, cgroups) tayanadi — Windows va macOS yadrolarida bular yo'q. Shuning uchun Docker Desktop bitta yengil Linux VM ni ishga tushiradi va barcha konteynerlar shu bitta VM ichida ishlaydi. Har bir ilova uchun alohida VM emas — bitta umumiy "Linux poydevori". Serverda (Linux) esa VM umuman yo'q — konteynerlar to'g'ridan-to'g'ri yadro ustida.
Xulosa
Eslab qoling:
- Windows:
wsl --install→ Docker Desktop (WSL 2); loyihalarni WSL ichida saqlang - macOS: Docker Desktop yoki OrbStack / Colima
- Linux: Docker Engine;
dockerguruhi = root huquqi - Tekshirish:
docker --version,docker compose version,docker run hello-world docker compose(bo'sh joy bilan) — yangi;docker-compose— eski- Xotira va diskni sozlang
Keyingi dars
3-dars: Birinchi konteyner — docker run hello-world, nginx