O'rnatish — Docker Desktop, Linux, WSL 2

~15 daq · Docker · Kirish

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)
  • docker va docker compose buyruqlari (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 arm64 arxitekturasida. Rasmiy image larning ko'pchiligi ikkala arxitekturani qo'llab-quvvatlaydi. Faqat amd64 li 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] docker guruhidagi 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:

  1. hello-world image ni kompyuterda qidirdi — topmadi
  2. Docker Hub dan yuklab oldi
  3. Undan konteyner yaratdi va ishga tushirdi
  4. 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; docker guruhi = 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