Asosiy Docker buyruqlari
Docker bilan samarali ishlash uchun bir nechta asosiy buyruqni bilish kifoya. Ushbu darsda konteyner va image'larni ko'rish, ishga tushirish, to'xtatish va o'chirish uchun kerak bo'ladigan barcha buyruqlarni misollar bilan o'rganamiz. Bu darsni ko'proq amaliyot bilan mustahkamlang.
docker ps โ ishlab turgan konteynerlar
docker ps buyrug'i ayni paytda ishlab turgan konteynerlar ro'yxatini ko'rsatadi:
docker ps
CONTAINER ID IMAGE COMMAND STATUS PORTS NAMES
a1b2c3d4e5f6 nginx "/docker-entrypoint." Up 5 minutes 0.0.0.0:8080->80/tcp mening-serverim
Har bir konteyner haqida ID, image nomi, holati, portlari va nomi ko'rsatiladi. Ammo bu faqat ishlab turgan konteynerlarni beradi. To'xtatilganlarini ham ko'rish uchun -a (all) bayrog'ini qo'shamiz:
docker ps -a
-a bilan barcha konteynerlar ko'rinadi โ ishlab turganlari ham, to'xtaganlari ham. Bu ayniqsa xatoliklarni topishda foydali: konteyner darhol to'xtab qolgan bo'lsa, uni faqat -a bilan ko'rasiz.
docker images โ mavjud image'lar
Kompyuteringizga yuklab olingan image'lar ro'yxatini ko'rish uchun:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest a1b2c3d4e5f6 2 weeks ago 187MB
node 20 f6e5d4c3b2a1 3 weeks ago 1.1GB
ubuntu latest 1a2b3c4d5e6f 1 month ago 77.9MB
Bu yerda image nomi (REPOSITORY), versiyasi (TAG), noyob ID'si, yaratilgan vaqti va hajmi ko'rinadi. TAG โ bu versiya belgisi. Agar tag ko'rsatilmasa, standart holatda latest ishlatiladi.
docker pull โ image yuklab olish
Image'ni oldindan yuklab olish uchun docker pull ishlatiladi. Odatda docker run buni avtomatik qiladi, ammo ba'zan image'ni oldindan tayyorlab qo'yish qulay:
# Standart (latest) versiyasini yuklash
docker pull nginx
# Aniq versiyasini yuklash
docker pull node:20
docker pull postgres:16
node:20, latest emas. Chunki latest vaqt o'tishi bilan o'zgaradi va ilovangiz kutilmaganda buzilishi mumkin.docker run โ konteyner ishga tushirish va bayroqlari
docker run โ asosiy buyruq. Uning eng muhim bayroqlari:
-dโ fonda (detached) ishga tushirish;-p host:containerโ port bog'lash;-e KALIT=qiymatโ muhit o'zgaruvchisi (environment variable) berish;-v host_yo'l:container_yo'lโ papka yoki volume ulash (ma'lumotni saqlash);--name nomโ konteynerga nom berish;--rmโ konteyner to'xtagach, uni avtomatik o'chirish.
Barcha bayroqlarni birlashtirgan to'liq misol โ PostgreSQL ma'lumotlar bazasini ishga tushirish:
docker run -d \
--name mening-bazam \
-e POSTGRES_PASSWORD=maxfiy123 \
-e POSTGRES_DB=dukon \
-p 5432:5432 \
-v baza-malumoti:/var/lib/postgresql/data \
postgres:16
Bu yerda: -e orqali parol va baza nomi beriladi, -p orqali port ochiladi, -v orqali ma'lumot saqlanadigan volume ulanadi. Endi PostgreSQL fonda ishlab turadi.
-e (environment) juda muhim: ko'plab image'lar o'z sozlamalarini muhit o'zgaruvchilari orqali oladi. Masalan, postgres image'i parolni POSTGRES_PASSWORD orqali kutadi. Har bir image hujjatida qanday o'zgaruvchilar kerakligi yozilgan.docker stop / start / rm โ boshqarish
Konteynerlarni to'xtatish, qayta ishga tushirish va o'chirish uchun quyidagi buyruqlar ishlatiladi:
# Konteynerni to'xtatish
docker stop mening-serverim
# To'xtatilgan konteynerni qayta ishga tushirish
docker start mening-serverim
# Konteynerni butunlay o'chirish (avval to'xtatilgan bo'lishi kerak)
docker rm mening-serverim
# Ishlab turgan konteynerni majburan o'chirish
docker rm -f mening-serverim
Muhim farq: stop konteynerni to'xtatadi, ammo o'chirmaydi โ u docker ps -ada qoladi va qayta ishga tushirilishi mumkin. rm esa konteynerni butunlay yo'q qiladi.
docker rm bilan o'chirilgan konteyner ichidagi ma'lumotlar (agar volume ishlatilmagan bo'lsa) butunlay yo'qoladi. Muhim ma'lumotni doim volume orqali saqlang โ bu haqda alohida darsda gaplashamiz.docker rmi โ image o'chirish
Endi keraksiz image'ni o'chirish. Diqqat: bu rm emas, rmi (remove image):
# Image'ni nomi bilan o'chirish
docker rmi nginx
# Image'ni ID orqali o'chirish
docker rmi a1b2c3d4e5f6
docker rmi xatolik beradi. Avval o'sha konteynerlarni o'chirishingiz kerak. Keraksiz image'lar diskda ko'p joy egallaydi, shuning uchun vaqti-vaqti bilan tozalab turing.docker exec -it โ ishlab turgan konteynerga kirish
Ba'zan ishlab turgan konteyner ichiga kirib, buyruq berish kerak bo'ladi (masalan, xatolikni tekshirish yoki fayllarni ko'rish uchun). Buning uchun docker exec ishlatiladi:
docker exec -it mening-serverim bash
Bu buyruq ishlab turgan mening-serverim konteyneri ichida interaktiv bash terminalini ochadi. Endi siz konteyner ichidasiz va uning fayl tizimini ko'rishingiz mumkin. Chiqish uchun exit yozing.
-it ikkita bayroqning birlashmasi: -i (interactive) โ kiritishga imkon beradi, -t (tty) โ terminal muhitini yaratadi. Ular deyarli doim birga ishlatiladi.
alpine) bash bo'lmaydi. Bunday holatda sh ishlatiladi: docker exec -it konteyner sh.docker logs โ konteyner jurnallari
Fonda ishlab turgan konteyner nima qilayotganini, xatolar bor-yo'qligini ko'rish uchun uning jurnallarini (logs) o'qiymiz:
# Barcha jurnallarni ko'rsatish
docker logs mening-serverim
# Jonli kuzatish (yangi loglar chiqishi bilan ko'rsatiladi)
docker logs -f mening-serverim
# Faqat oxirgi 50 qatorni ko'rsatish
docker logs --tail 50 mening-serverim
-f (follow) bayrog'i jurnalni jonli kuzatadi โ bu ilova ishlashini real vaqtda kuzatish uchun juda foydali. Kuzatishni to'xtatish uchun Ctrl+C bosing (bu konteynerni to'xtatmaydi, faqat kuzatishni tugatadi).
docker logs โ nosozliklarni tuzatishda (debugging) birinchi murojaat qiladigan buyruqingiz bo'lishi kerak. Konteyner darhol to'xtab qolsa, sababini deyarli har doim loglarda topasiz.Xulosa
docker psโ ishlab turgan,docker ps -aโ barcha konteynerlar;docker imagesโ mavjud image'lar,docker pullโ image yuklab olish;docker runbayroqlari:-d(fon),-p(port),-e(muhit),-v(volume),--name(nom);docker stop/startโ to'xtatish/qayta ishga tushirish,docker rmโ konteyner o'chirish,docker rmiโ image o'chirish;docker exec -it konteyner bashโ ishlab turgan konteynerga kirish;docker logs -fโ jurnallarni jonli kuzatish, nosozliklarni topishda birinchi vosita.