Docker Hub — tayyor image lar, teglar, rasmiy image lar
Muammodan boshlaylik
docker run nginx yozdingiz — va Nginx paydo bo'ldi. U qayerdan keldi? MySQL, PostgreSQL, Redis, Node, Python — hammasi uchun ham shunday tayyor image lar bormi? Ular xavfsizmi? Qaysi birini tanlash kerak?
Docker Hub nima
Docker Hub (https://hub.docker.com) — image larning eng katta ommaviy ombori (registry). docker run nginx yozganingizda Docker image ni avval kompyuterda qidiradi, topmasa — Docker Hub dan yuklab oladi.
docker pull postgres:17 # faqat yuklab olish, ishga tushirmasdan
docker search redis # qidirish (yoki saytda)
Boshqa registry lar ham bor: GitHub Container Registry (ghcr.io), AWS ECR, Google Artifact Registry, Quay. 38-darsda o'z image larimizni ularga yuklaymiz.
docker pull ghcr.io/kompaniya/ilova:1.0 # boshqa registry — to'liq manzil bilan
Image turlari
1. Rasmiy image lar (Official Images)
nginx, node, python, postgres, mysql, redis, php, ubuntu, alpine, golang ...
- Nomida slash yo'q (
nginx, emaskimdir/nginx) - Docker Hub da "Docker Official Image" belgisi
- Docker jamoasi va loyiha mualliflari tomonidan qo'llab-quvvatlanadi
- Muntazam yangilanadi, xavfsizlik zaifliklari tuzatiladi
Qoida: asos (base) image sifatida — imkon qadar rasmiy image.
2. Tasdiqlangan nashriyotchilar (Verified Publisher)
bitnami/postgresql, grafana/grafana, localstack/localstack
Kompaniyalarning o'z mahsulotlari uchun rasmiy image lari — "Verified Publisher" belgisi bilan.
3. Foydalanuvchi image lari
kimdir/mening-super-nginx
Istalgan kishi yuklashi mumkin. Ichida nima borligini bilmaysiz — zararli dastur, kripto-mayner, eskirgan zaif paketlar bo'lishi mumkin.
[!WARNING] Noma'lum foydalanuvchining image ini ishga tushirish — noma'lum odamning skriptini kompyuteringizda ishga tushirish bilan bir xil. Production da faqat rasmiy yoki tasdiqlangan image lar, yoki o'zingiz yasagan image lar.
Image sahifasini o'qish
Docker Hub da postgres sahifasida eng muhim bo'limlar:
Supported tags — mavjud versiyalar:
17.2, 17, latest
17.2-alpine, 17-alpine, alpine
16.6, 16
...
How to use this image — ishga tushirish misollari va muhit o'zgaruvchilari:
POSTGRES_PASSWORD — majburiy, superuser paroli
POSTGRES_USER — ixtiyoriy, standart: postgres
POSTGRES_DB — ixtiyoriy, yaratiladigan baza nomi
docker run -d --name baza -e POSTGRES_PASSWORD=maxfiy -p 5432:5432 postgres:17
Har bir rasmiy image ning sahifasi — o'sha image ning hujjati. Konfiguratsiya, volume yo'llari, init skriptlar — hammasi shu yerda. Yangi image ishlatishdan oldin sahifani o'qing.
Teg variantlari
Bir xil dasturning bir nechta "ta'mi":
| Teg qo'shimchasi | Asos | Hajm (node misolida) | Qachon |
|---|---|---|---|
(yo'q) — node:22 |
Debian, to'liq | ~1.1 GB | Ko'p vositalar kerak bo'lsa |
-slim — node:22-slim |
Debian, minimal | ~200 MB | Ko'pchilik holatlar uchun yaxshi tanlov |
-alpine — node:22-alpine |
Alpine Linux | ~150 MB | Kichik image; ehtiyot bo'ling (pastda) |
-bookworm, -noble |
Aniq Debian / Ubuntu versiyasi | — | OS versiyasini qotirish |
Alpine — juda kichik Linux distributivi. Lekin u standart C kutubxonasi o'rniga musl ishlatadi — ba'zi native paketlar (masalan, ba'zi Python kutubxonalari, eski bcrypt) unda kompilyatsiya qilinmasligi yoki boshqacha ishlashi mumkin. Muammo chiqsa — -slim ga o'ting. Batafsil — 17-dars.
Aniq versiya va digest
docker pull node:22 # Node 22 ning oxirgisi — vaqt o'tishi bilan o'zgaradi
docker pull node:22.11.0 # aniq versiya
docker pull node:22.11.0-alpine3.20 # versiya + aniq OS
Eng ishonchli — digest (image tarkibining xeshi):
docker pull node@sha256:3c4e5f...
Teg ni muallif boshqa image ga ko'chirishi mumkin; digest esa — hech qachon o'zgarmaydi. Juda qat'iy production muhitlar uchun.
Yuklab olish chegarasi
Docker Hub ro'yxatdan o'tmagan foydalanuvchilar uchun yuklab olishlar sonini cheklaydi (vaqt oralig'ida ma'lum son). CI serverlarda yoki ko'p yuklab olishda xato:
toomanyrequests: You have reached your pull rate limit.
Yechim — bepul hisob bilan kirish (cheklov oshadi):
docker login
Image lar haqida ma'lumot
docker image inspect nginx:latest # to'liq ma'lumot: qatlamlar, env, portlar, buyruq
docker image history nginx:latest # qaysi qatlam qanday yaratilgan va hajmi
history — image ni kim va qanday yasaganini tekshirish uchun foydali. 17-darsda image ni kichraytirishda ishlatamiz.
Nima uchun shunday?
Nima uchun Docker Hub da hamma istalgan image ni yuklay oladi — bu xavfli emasmi?
Xavfli bo'lishi mumkin — xuddi npm yoki PyPI kabi. Ochiq ekotizimning kuchi — har kim ulasha oladi; zaifligi — har kim ulasha oladi. Shuning uchun "ishonch belgilari" tizimi bor: rasmiy image lar, tasdiqlangan nashriyotchilar, yuklab olishlar soni, yulduzlar. Ochiq ombor — rivojlanish uchun ajoyib; production uchun esa ishonch zanjiri kerak: rasmiy asos image → sizning Dockerfile ingiz → sizning registry ingiz.
Xulosa
Eslab qoling:
- Docker Hub — ommaviy image ombori;
docker pull,docker search - Rasmiy image lar (slash siz nom) — asos uchun eng yaxshi tanlov
- Noma'lum foydalanuvchi image lari — xavfli
- Image sahifasi — uning hujjati: teglar, muhit o'zgaruvchilari
- Variantlar: to'liq,
-slim,-alpine(musl — ehtiyot bo'ling) - Aniq teg (
node:22.11-alpine),latestemas; eng qat'iy — digest docker login— yuklab olish chegarasini oshirish
Keyingi dars
6-dars: docker run — -d, --name, --rm, -it