Docker Hub — tayyor image lar, teglar, rasmiy image lar

~10 daq · Docker · Kirish

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, emas kimdir/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), latest emas; eng qat'iy — digest
  • docker login — yuklab olish chegarasini oshirish

Keyingi dars

6-dars: docker run — -d, --name, --rm, -it