docker run — -d, --name, --rm, -it
Muammodan boshlaylik
docker run — Docker ning eng ko'p ishlatiladigan buyrug'i. Lekin parametrlarsiz u noqulay:
- Terminal band bo'lib qoladi — boshqa buyruq yoza olmaysiz
- Konteynerlarga tasodifiy nomlar:
elegant_hopper,zealous_turing— qaysi biri qaysi? - Har bir sinovdan keyin to'xtatilgan konteynerlar to'planib qoladi
- Konteyner ichiga kirib bo'lmaydi
Bu darsda eng muhim parametrlarni tartibga solamiz.
Umumiy shakl
docker run [PARAMETRLAR] IMAGE [BUYRUQ] [ARGUMENTLAR]
docker run -d --name web -p 8080:80 nginx:1.27
# └──── parametrlar ────┘ └ image ┘
docker run --rm ubuntu ls -la /etc
# └param┘ └image┘ └buyruq + argumentlar┘
Muhim: parametrlar image nomidan oldin. Image dan keyin yozilgan narsa — konteyner ichida bajariladigan buyruq.
docker run nginx -d # ❌ -d nginx ga argument sifatida uzatiladi, Docker ga emas
docker run -d nginx # ✅
-d — orqa fonda (detached)
docker run nginx # terminal band, loglar ekranda; Ctrl + C — konteyner to'xtaydi
docker run -d nginx # konteyner ID sini chiqaradi va terminal bo'shaydi
Serverlar, bazalar, veb-ilovalar — doim -d.
--name — nom berish
docker run -d --name baza postgres:17
docker logs baza
docker stop baza
Nom — ID o'rniga qulay identifikator. Har bir nom — noyob:
docker: Error response from daemon: Conflict. The container name "/baza" is already in use
Eski konteynerni o'chiring (docker rm -f baza) yoki boshqa nom bering.
--rm — to'xtaganda o'chirish
docker run --rm ubuntu cat /etc/os-release
Konteyner ishini tugatgach avtomatik o'chiriladi. Bir martalik buyruqlar va sinovlar uchun — majburiy odat, aks holda docker ps -a yuzlab "Exited" konteynerlar bilan to'ladi.
-it — interaktiv terminal
docker run -it --rm ubuntu bash
docker run -it --rm python:3.13
-i(interactive) — klaviatura kiritishini konteynerga uzatish-t(tty) — haqiqiy terminal (ranglar, kursor,Ctrl + C)
Deyarli doim birga ishlatiladi. Ichkarida ishlash, REPL, debug uchun.
Buyruqni almashtirish
Har bir image da standart buyruq bor (nginx → nginx serverini ishga tushirish). Image dan keyin yozilgan buyruq uni almashtiradi:
docker run --rm node:22 node --version # v22.11.0
docker run --rm node:22 npm --version
docker run --rm python:3.13 python -c "print(2**100)"
docker run --rm alpine ping -c 3 google.com
Boshqa foydali parametrlar
docker run -d \
--name api \
-p 3000:3000 \
-e NODE_ENV=production \
-v api-data:/app/data \
-w /app \
--restart unless-stopped \
--memory 512m \
mening-api:1.0
| Parametr | Vazifasi |
|---|---|
-p host:konteyner |
Port |
-e KALIT=qiymat |
Muhit o'zgaruvchisi |
-v manba:yo'l |
Volume yoki bind mount |
-w /yo'l |
Ishchi papka |
--restart |
Qayta ishga tushish siyosati |
--memory, --cpus |
Resurs chegaralari |
--network |
Tarmoq (23-dars) |
--platform linux/amd64 |
Arxitektura (Apple Silicon da) |
-u 1000:1000 |
Qaysi foydalanuvchi sifatida ishlash |
Uzun buyruqlar va Compose
docker run -d --name api -p 3000:3000 -e NODE_ENV=production -e DB_HOST=baza \
-e DB_PASSWORD=... -v api-data:/app/data --network loyiha --restart unless-stopped mening-api:1.0
Bunday buyruqni har safar yozish, eslab qolish va jamoaga yetkazish qiyin. 26-darsda Docker Compose bularning hammasini bitta o'qishli faylga yozish imkonini beradi. Hozircha docker run ni yaxshi bilish — Compose ichida nima bo'layotganini tushunish uchun zarur.
Nima uchun shunday?
Nima uchun parametrlar image nomidan oldin, buyruq esa keyin yoziladi?
Chunki image dan keyingi hamma narsa konteyner ichidagi dasturga tegishli — Docker uni o'qimaydi, shunchaki uzatadi. Docker o'zi uchun parametrlarni image nomigacha o'qiydi, undan keyin esa "bu mening ishim emas" deydi. Bu chegara aniq bo'lishi kerak: aks holda docker run ubuntu ls -l dagi -l Docker parametrimi yoki ls nikimi — noaniq bo'lardi.
Xulosa
Eslab qoling:
docker run [parametrlar] image [buyruq]— parametrlar image dan oldin-d— fonda;--name— noyob nom;--rm— tugagach o'chirish-it— interaktiv terminal- Image dan keyingi buyruq — standart buyruqni almashtiradi
-p,-e,-v,--restart,--memory— keyingi darslarda batafsil- Uzun
docker runlar — Compose ga (26-dars)
Keyingi dars
7-dars: Boshqaruv — ps, stop, start, rm, prune