Harbor Container Registry o'rnatish va sozlash
Harbor (opens in a new tab) — bu open-source (opens in a new tab) konteyner registri bo'lib, konteyner imagelarini saqlash, boshqarish va xavfsizligini ta'minlash uchun mo'ljallangan. Bu Cloud Native Computing Foundation (CNCF) doirasidagi loyiha. Harbor access polisi va rollari, zaifliklarni (vulnerability) skanerlash va image signing kabi xususiyatlar bilan xavfsizlik va muvofiqlikni o'z dizayni markaziga qo'yadi.
Harbor dastlab VMware tomonidan ishlab chiqilgan bo'lib, keyinchalik CNCFga topshirilgan. 2020-yil 13-mayda chiqarilgan 2.0 versiyasida Harbor OCI (Open Container Initiative) standartlariga mos keladigan birinchi open-source registr sifatida e'lon qilindi. Bu versiya konteyner imagelari, Helm chartlari, OPAlar va Singularity kabi turli cloud-native artifactlarni saqlash imkoniyatini kengaytirdi.
Minimal konfiguratsiya bilan Harbor Docker command-line interface (CLI) va kubectl kabi toollar bilan birlashadi. Docker CLI orqali imagelarni xavfsiz push va pull qilish uchun Harbor registryga kirishingiz mumkin. Kubernetes toollari ham sizning Harbor registringiz bilan ishonchli tarzda autentifikatsiya qilishi va registryda saqlangan imagelardan konteynerlarni to'g'ridan-to'g'ri deploy qilish imkonini beradi.
Harbor Arxitekturasi
Harbor bir nechta asosiy komponentlardan tashkil topgan murakkab tizim bo'lib, ularning har biri ma'lum bir vazifani bajaradi. Quyidagi diagrammada Harbor arxitekturasining umumiy ko'rinishi keltirilgan.
+--------------------------------------------------+
| HARBOR |
| |
| +----------+ +----------+ +------------+ |
| | | | | | | |
| | Nginx |--->| Core |--->| Registry | |
| | (Proxy) | | (API/UI) | | (Storage) | |
| | | | | | | |
| +----------+ +-----+----+ +------------+ |
| | |
| +-------------+-------------+ |
| | | | |
| +-----+----+ +-----+----+ +----+------+ |
| | | | | | | |
| | Redis | |PostgreSQL| |Job Service| |
| | (Cache) | | (DB) | | (Tasks) | |
| | | | | | | |
| +----------+ +----------+ +-----------+ |
| |
+--------------------------------------------------+-
Nginx (Proxy) — barcha HTTP/HTTPS so'rovlarni qabul qilib, tegishli komponentlarga yo'naltiradi. Harbor o'zida Nginx built-in bo'lgani uchun alohida reverse proxy o'rnatish shart emas.
-
Core (API/UI) — Harbording asosiy komponenti. REST API, veb-interfeys (UI), webhook, token xizmati va boshqa asosiy funksiyalarni boshqaradi.
-
Registry (Storage) — Docker Distribution (registry v2) asosida qurilgan bo'lib, konteyner imagelarini saqlash va tarqatishni boshqaradi. OCI standartlariga mos keladi.
-
PostgreSQL (DB) — Harbor metadatasini saqlaydi: foydalanuvchilar, loyihalar, replikatsiya polislari, tag retention qoidalari va boshqalar.
-
Redis (Cache) — sessiyalarni boshqarish va vaqtinchalik ma'lumotlarni keshlash uchun ishlatiladi. Job Service navbatlarini ham boshqaradi.
-
Job Service (Tasks) — fon vazifalarini (background tasks) bajaradi: image replikatsiyasi, garbage collection, vulnerability skanerlash va boshqalar.
Ishni boshlash
Ushbu amaliyotda biz Harborni VM serverga o'rnatamiz, agar xohlasangiz Kubernetesga ham o'rnatishingiz mumkin. Amaliyotni amalga oshirish uchun bizga quyidagi minimum server talablari kerak bo'ladi.
Minimum Server talabi
| Host | OS | RAM | CPU | Xotira | Static IP |
|---|---|---|---|---|---|
| harbor | Ubuntu 20.04 | 8GB | 4 vCPU, 2 core | 100GB | Ha kerak |
Biz Harbor Container Registryni ikki xil o'rnatish usulini ko'rib chiqamiz: manual va Ansible bilan.
DNS sozlash
Harbor container registryni o'rnatishimiz uchun bizga domen kerak bo'ladi. DNS hostingizdan domenga Harbor ishlab turgan server static IP manzilini qo'shishingiz kerak bo'ladi.
Quyida ahost.uz (opens in a new tab) DNS hostiga namuna ko'rsatilgan.
Kerakli domen sozlamalariga kirib DNS xosting bo'limga o'ting, sizda quyidagi oyna ochilishi kerak.
Bu yerdan siz domen o'ziga yoki subdomenga Harbor server static IP manzilini ko'rsatishingiz kerak bo'ladi. Bizda helm.uz (opens in a new tab) domenimiz bor, keling unga harbor subdomen qo'shamiz.
- Name -> subdomen nomi
- Type -> A
- TTL -> 14400
- RDATA -> Harbor server Static IP manzili
Manual Harbor Container Registry o'rnatish
Bu bosqichda biz Harbor Container Registryni manual (qo'lda) holda setup qilishni ko'rib chiqamiz.
Docker va Docker Compose o'rnatish
Harborni ishga tushirish uchun serverimizga Docker va Docker Compose o'rnatib olishimiz kerak bo'ladi. Docker va Docker Compose o'rnatish bo'yicha Linux serverlarga Docker o'rnatish (opens in a new tab) qo'llanmasi orqali o'rnatib olishingiz mumkin.
SSL Sertifikat olish
SSL dan foydalanish serverga va undan keladigan trafikni himoya qilish imkonini beradi. Harborda o'zida Nginx mavjud bo'lgani uchun alohida Nginx o'rnatish va sozlash shart emas.
Web server HTTPS requestlarini qabul qilishidan oldin ishonchli sertifikat markazi tomonidan imzolangan public-key sertifikatiga ega bo'lishi kerak. Let's Encrypt — bu vakolatlarning eng keng tarqalganlaridan biri. U asosiy SSL/TLS sertifikatlarini tegishli veb-saytlarga tarqatuvchi bepul avtomatlashtirilgan xizmatni boshqaradi. Let's Encrypt sertifikat berish jarayonini avtomatlashtirish uchun Automatic Certificate Management Environment (ACME) protokolidan foydalanadi. Let's Encrypt (opens in a new tab) rasmiy saytida domenni tekshirish haqida batafsilroq texnik ma'lumotlar taqdim etilgan.
Certbot HTTPS-ni yoqish orqali veb-xavfsizlikni yaxshilash maqsadida Electronic Frontier Foundation (EFF) tomonidan ishlab chiqilgan. U ko'pgina operatsion tizimlar, shuningdek, Apache va NGINX kabi eng mashhur veb-server dasturlari bilan mos keladi. Certbot sertifikatni so'rash, ACME bo'yicha barcha talablarni bajarish, sertifikatni o'rnatish va veb-serverni sozlash uchun Let's Encrypt bilan bog'lanish uchun javobgardir. Shuningdek, u sertifikatni yangilash jarayonini avtomatik ravishda boshqarishi mumkin. Qo'shimcha ma'lumot uchun Certbot veb-saytidagi About Certbot (opens in a new tab) sahifasini ko'rib chiqishingiz mumkin.
- Debian Based
- Red Hat Based
1-> Serverimizga certbot va kerakli toollarni o'rnatib olamiz.
sudo apt update
sudo apt install certbot vim nano zip unzip wget git -y2-> Domenimiz uchun SSL sertifikat olamiz, buning uchun domenimiz DNS hostga serverimiz static IP manzili bog'langan bo'lishi kerak.
sudo certbot certonly --standalone -d harbor.helm.uzSizda rasmdagidek natija chiqishi kerak.
harbor.helm.uz domenimiz uchun SSL sertifikat quyidagi papkada joylashganini ko'rsatadi.
Certificate: /etc/letsencrypt/live/harbor.helm.uz/fullchain.pem
Key: /etc/letsencrypt/live/harbor.helm.uz/privkey.pemHarbor o'rnatish
Harbor relizlar sahifasidan (opens in a new tab) eng so'nggi (latest) Harbor installer paketini yuklab oling. Siz onlayn yoki oflayn installerini tanlashingiz mumkin.
1-> Ushbu buyruq orqali v2.11.1 versiyali offline Harbor installerni yuklab olamiz.
wget https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgzHarbor installerini o'rnatishdan keyin ham saqlab qo'yishingiz kerak, chunki u keyinchalik konfiguratsiya o'zgarishlarini amalga oshirish uchun skriptlarni o'z ichiga oladi.
2-> Yuklab olgan offline Harbor installerni arxivdan chiqarib olamiz.
tar xzvf harbor-offline-installer-v2.11.1.tgz3-> harbor papkaga kirib harbor.yml.tmpl namuna konfiguratsiya faylini harbor.yml nomi bilan nusxalaymiz, bu bizning asosiy Harbor konfiguratsiya faylimiz bo'ladi.
cd harbor
cp harbor.yml.tmpl harbor.yml4-> Asosiy harbor.yml konfiguratsiyani o'zimizga moslab sozlab olamiz.
sudo nano harbor.ymlUshbu konfiguratsiyada hostname: ga domenimizni yozamiz va SSL sertifikatimiz hamda keyining pathini beramiz.
hostname: harbor.helm.uz
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /etc/letsencrypt/live/harbor.helm.uz/fullchain.pem
private_key: /etc/letsencrypt/live/harbor.helm.uz/privkey.pem
# enable strong ssl ciphers (default: false)
# strong_ssl_ciphers: falseBu qismda Harbor uchun birinchi kirish admin parolini o'zgartirasiz. Xavfsizlik uchun default parolni o'zgartiring va kuchli parol generatsiya qilib qo'ying.
# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: Harbor12345Bu qismda Harbor DB konfiguratsiya qilamiz. Xavfsizlik uchun DB parolini o'zgartiring.
# Harbor DB configuration
database:
# The password for the root user of Harbor DB. Change this before any production use.
password: root123
# The maximum number of connections in the idle connection pool. If it <=0, no idle connections are retained.
max_idle_conns: 100
# The maximum number of open connections to the database. If it <= 0, then there is no limit on the number of open connections.
# Note: the default number of connections is 1024 for postgres of harbor.
max_open_conns: 900
# The maximum amount of time a connection may be reused. Expired connections may be closed lazily before reuse. If it <= 0, connections are not closed due to a connection's age.
# The value is a duration string. A duration string is a possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m". V>
conn_max_lifetime: 5m
# The maximum amount of time a connection may be idle. Expired connections may be closed lazily before reuse. If it <= 0, connections are not closed due to a connection's idle time.
# The value is a duration string. A duration string is a possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m". V>
conn_max_idle_time: 0
# The default data volume
data_volume: /data5-> Konfiguratsiyani o'zingizga moslab olganingizdan keyin install.sh bash scriptni ishga tushirish orqali Harborni o'rnatamiz.
sudo ./install.shHarbor muvaffaqiyatli o'rnatilsa rasmdagidek natija chiqishi kerak.
Ansible bilan Harbor Container Registry o'rnatish
Bu bosqichda biz Harbor Container Registryni Ansible yordamida avtomatlashtirilgan holda setup qilishni ko'rib chiqamiz. Bu bosqichda biz open-source bo'lgan Ansible kolleksiyalardan foydalanamiz, repo URL: github.com/ismoilovdevml/infra-as-code (opens in a new tab)
Ansible kolleksiya repositoriyani git clone qilib yuklab olamiz.
git clone https://github.com/ismoilovdevml/infra-as-code.gitDocker va Docker Compose o'rnatish
infra-as-code repodan Ansible kolleksiyalarga o'tib Docker uchun yozilgan playbookga o'tamiz.
cd infra-as-code/Ansible/dockerBu directoriyadan inventory.ini faylini ochib Docker va Docker Compose o'rnatmoqchi bo'lgan serverimiz credentialslarini beramiz. Ushbu Ansible playbookni yurgizmoqchi bo'lgan kompyuter yoki serverda siz Harbor setup qilmoqchi bo'lgan serveringizga SSH connection bo'lishi talab qilinadi.
[all]
harbor-server ansible_host=24.144.106.189 ansible_user=rootUshbu playbookni yurgizish uchun community.general Ansible collectionni o'rnatishimiz kerak bo'ladi.
ansible-galaxy collection install community.generalDocker o'rnatamiz.
ansible-playbook -i inventory.ini install_docker.ymlPlaybook muvaffaqiyatli ishga tushganida sizga quyidagi info chiqishi kerak.
Docker Compose o'rnatamiz.
ansible-playbook -i inventory.ini install_docker-compose.ymlPlaybook muvaffaqiyatli ishga tushganida sizga quyidagi info chiqishi kerak.
Docker va Docker Compose o'rnatib oldik, endi esa Harbor setup qiladigan Ansible playbookni ishga tushirsak bo'ladi.
Harbor o'rnatish
Harbor setup qiladigan Ansible playbooklar directoriyasiga kiramiz.
cd infra-as-code/Ansible/harborHar doimgidek inventory.ini da Harbor serverimiz credentialslarini beramiz.
[harbor_server]
harbor-server ansible_host=24.144.106.189 ansible_user=rootvars.yml faylda esa kerakli variablelarni yozib to'ldiramiz.
harbor_version: "v2.11.1"
harbor_hostname: "harbor.helm.uz"
harbor_admin_password: "Harbor12345"
harbor_db_password: "root123"
ssl_option: "certbot" # "certbot" yoki "self_signed" qiymatlarini olishi mumkin
certbot_cert_path: "/etc/letsencrypt/live/{{ harbor_hostname }}/fullchain.pem"
certbot_key_path: "/etc/letsencrypt/live/{{ harbor_hostname }}/privkey.pem"
self_signed_cert_path: "/path/to/selfsigned/fullchain.pem" # Self-signed sertifikat uchun to'liq path
self_signed_key_path: "/path/to/selfsigned/privkey.pem" # Self-signed kalit uchun to'liq path
harbor_download_url: "https://github.com/goharbor/harbor/releases/download/{{ harbor_version }}/harbor-offline-installer-{{ harbor_version }}.tgz"Yuqoridagi konfiguratsiyada Harbor versiyasi, domen nomi, admin parol va DB parol o'zgaruvchilari kiritilgan — ularni o'zingizga moslab kerakli versiya, domen va admin parolni kiritasiz. SSL sertifikat olishda ikkita option qo'yilgan: default holda certbot va self-signed optioni ham bor. Agar certbot tanlansa hech narsa o'zgartirilmaydi va certbot orqali SSL olib ishlanadi. Agar siz ssl_optionni self_signedga o'zgartirsangiz, self-signed SSL sertifikatlarga path berishingiz kerak bo'ladi.
Harbor Container Registryni setup qilish uchun playbookni ishga tushiramiz.
ansible-playbook -i inventory.ini bootstrap_harbor.ymlPlaybook muvaffaqiyatli ishga tushganida sizga quyidagi info chiqishi kerak.
Harbor bilan ishlash
Harborni muvaffaqiyatli o'rnatib ishga tushirganimizdan keyin, Harbor domenimizga brauzer orqali kiramiz, sizda quyidagicha oyna ochilishi kerak.
Birinchi kirishingizda admin user bilan kirasiz, default parol esa harbor.yml konfiguratsiyadagi parolimiz.
Harbor setup qilganimizdan keyin Proxy Cache sozlashimiz kerak bo'ladi. Proxy Cache internetdagi global container registrylardan olingan docker imagelarni o'zida cacheda saqlab, keyingi safar pull qilinganda lokaldan ishlatish uchun kerak bo'ladi. Masalan sizda CI/CD bor va har safar CI/CD run bo'lganida Docker Hub dan kerakli docker imagelarni internet orqali pull qilinadi. Agar Harborda Proxy Cache Docker Hub ga config qilingan bo'lsa, Harbor o'zida yo'q docker imagelarni birinchi marta Docker Hub dan yuklab olib o'zida saqlaydi va keyingi CI/CD run qilganizda kerakli docker imagelarni Docker Hub dan internet orqali emas, Harbor Container Registrydan lokal pull qiladi — bu samaradorlikni va tezlikni oshiradi.
Buning uchun default library projectni o'chiramiz.
Harbor UI dan Administration -> Registries ga o'tamiz va NEW ENDPOINT bosamiz.
Registry Endpointni quyidagicha sozlaymiz: Providerga Docker Hub va nom beramiz, Endpoint URL esa Docker Hub URL. Agar Docker Hub useringiz bo'lsa Access ID va Access Secretga yozasiz, hammasini tekshirish uchun esa TEST CONNECTION bosib tekshirib olasiz.
Registry Endpoint yaratib olganimizdan keyin Registries bo'limda yaratganimiz chiqishi kerak.
Harborda Projects ga o'tib library project yaratib olamiz.
Projectni quyidagicha config qilamiz: Access levelni Public qilamiz va Proxy Cacheni enable qilib yuqorida yaratgan dockerhub endpointni belgilaymiz va OK bosib yaratib olamiz.
Harbordan CI/CD va serverlardan foydalanish uchun Robot Account yaratib olamiz. Administration -> Robot Accounts ga o'tamiz va NEW ROBOT ACCOUNT bosamiz.
Robot Accountga nom beramiz, masalan cicd nomli robot account.
Robot Accountga kerakli permissionlarni beramiz, masalan Delete va Stop dan boshqa barcha permissionlar.
Undan keyin esa Project tanlanib, projectdan foydalanish uchun yana kerakli permissionlarni beramiz.
Masalan Delete va Stop dan boshqa barcha permissionlar.
Robot Account yaratganimizdan keyin bizga robot account secret tokenini beradi, biz uni saqlab qo'yishimiz kerak bo'ladi.
Harbor tomonidan berilgan robot account token bilan Harbor Container Registrimizga docker login qilib kirib tekshirib ko'ramiz. Robot accountlar boshida robot$ qo'shiladi, shunda bizning holatda Container Registry URL harbor.helm.uz (opens in a new tab) va robot account user robot$cicd, password esa secret token bo'ladi.
Keling endi Proxy Cache ishlayotganini tekshirib ko'rish uchun Harbor Container Registrimizda yo'q bo'lgan docker imageni pull qilib ko'ramiz. Agar Proxy Cache ishlayotgan bo'lsa, xatolik bermasdan o'zida bo'lmasa Docker Hub dan o'ziga olib bizga berishi kerak.
Hammasi yaxshi ishladi, Proxy Cache ishlamoqda — chunki Harborda hech qanday docker image yo'q edi va men harbor.helm.uz/library/redis:latest imageni so'radim, u esa o'zida bo'lmagani uchun Registry Endpoint orqali Docker Hub dan redis:latest imageni o'ziga olib keyin bizga yo'naltirdi. Keyingi docker pull da esa docker image to'g'ridan-to'g'ri lokaldan Harbordan pull qilinadi.
Buni tekshirib ko'rish uchun Harbor UI dan library projectga kirsak, bizda yuqorida pull qilgan docker imagemiz turgan bo'lishi kerak.
Proxy Cache ishlamoqda, hammasi yaxshi. Keling endi Harborga birorta docker image push qilib ko'ramiz. Buning uchun alohida bitta project yaratib olamiz, yuqorida library project yaratgandek faqat Proxy Cache yoqmasdan.
Proxy Cache yoqilgan Harbor projectlarga docker image push qilib bo'maydi!
Bizning holatimizda nginx:latest nomli docker image bor edi, uni qayta teglash kerak bo'ladi: registry-url/repo/image:tag formatida — harbor.helm.uz/devops-journey/nginx:latest.
Bizda hammasi ishladi.
Keling buni Harbor UI dan projectimizga kirib ko'rishimiz mumkin.
Vulnerability Scanning (Zaifliklarni skanerlash)
Harbor o'rnatilganda Trivy vulnerability scanner avtomatik ravishda o'rnatiladi. Trivy — Aqua Security tomonidan ishlab chiqilgan open-source vulnerability scanner bo'lib, konteyner imagelari, fayl tizimlari va Git repositoriyalaridagi zaifliklarni aniqlaydi.
Avtomatik skanerlash sozlash
Harbor UI dan Administration -> Interrogation Services ga o'ting. Bu yerda vulnerability scannerning holatini ko'rishingiz mumkin.
Har bir yangi push qilingan imageni avtomatik skanerlash uchun Administration -> Interrogation Services sahifasida quyidagilarni sozlang:
- Vulnerability Scanning — avtomatik skanerlashni yoqish uchun "Scan images automatically when they are pushed" checkboxini belgilang.
- Schedule — barcha imagelarni davriy skanerlash uchun jadval sozlang (masalan, har kuni yoki har hafta).
Qo'lda skanerlash
Alohida imageni skanerlash uchun Projects dan kerakli projectga kiring, imageni tanlang va SCAN tugmasini bosing. Skanerlash yakunlanganda zaifliklar ro'yxati — kritik (Critical), yuqori (High), o'rta (Medium), past (Low) darajalar bo'yicha ko'rsatiladi.
Scan natijalarini ko'rish
Image tafsilotlariga kirganingizda Vulnerabilities tabida quyidagi ma'lumotlarni ko'rishingiz mumkin:
- CVE ID — zaiflikning noyob identifikatori
- Severity — zaiflik darajasi (Critical, High, Medium, Low)
- Package — zaiflik mavjud bo'lgan paket nomi
- Current Version — hozirgi versiya
- Fixed Version — tuzatilgan versiya (agar mavjud bo'lsa)
Tavsiya: Production muhitda faqat Critical va High darajadagi zaifliklardan xoli bo'lgan imagelarni deploy qilishni tavsiya etamiz. Buning uchun Harbor project sozlamalarida Prevent vulnerable images from running opsiyasini yoqishingiz mumkin.
Garbage Collection (Axlat yig'ish)
Vaqt o'tishi bilan Harbor registryda ko'p miqdorda ishlatilmagan imagelar, eski taglar va o'chirilgan layerlar to'planishi mumkin. Garbage Collection (GC) — bu foydalanilmagan blob (layer) larni tozalash va disk maydonini bo'shatish jarayoni.
GC ni qo'lda ishga tushirish
Harbor UI dan Administration -> Clean Up bo'limiga o'ting. Bu yerda siz Garbage Collection ni topasiz.
GC ni ishga tushirish uchun GC NOW tugmasini bosing. GC jarayoni tugaganidan keyin tozalangan maydon haqida hisobot ko'rsatiladi.
Diqqat: GC jarayonida Harbor registryga push va pull operatsiyalari sekinlashishi mumkin. Shuning uchun GC ni kam trafik vaqtida (masalan, tunda) ishga tushirish tavsiya etiladi.
GC ni jadval bo'yicha sozlash
GC ni avtomatik ravishda ishga tushirish uchun Schedule bo'limida jadval sozlashingiz mumkin:
- None — avtomatik GC o'chirilgan
- Hourly — har soatda
- Daily — har kuni
- Weekly — har haftada
- Custom — cron formatida maxsus jadval (masalan:
0 2 * * *— har kuni soat 02:00 da)
Tag Retention qoidalari
GC bilan birga Tag Retention qoidalarini ham sozlash tavsiya etiladi. Bu qoidalar qaysi imagelar va taglarni saqlash, qaysilarini o'chirishni belgilaydi.
Projects dan kerakli projectga kirib Policy -> Tag Retention bo'limida qoidalarni sozlashingiz mumkin:
- Retain the most recently pushed # artifacts — eng oxirgi push qilingan N ta artifactni saqlash
- Retain the most recently pulled # artifacts — eng oxirgi pull qilingan N ta artifactni saqlash
- Retain always — doim saqlash (muhim taglar uchun, masalan
latest,stable)
Muammolarni bartaraf etish (Troubleshooting)
Harbor bilan ishlashda duch kelishi mumkin bo'lgan keng tarqalgan muammolar va ularning yechimlari.
Harbor xizmatlarini boshqarish
Harbor Docker Compose asosida ishlaydi. Xizmatlarni boshqarish uchun Harbor o'rnatilgan papkaga kirib quyidagi buyruqlarni ishlating:
# Harbor xizmatlarini to'xtatish
cd /path/to/harbor
docker compose down
# Harbor xizmatlarini qayta ishga tushirish
docker compose up -d
# Xizmatlar holatini tekshirish
docker compose ps
# Barcha xizmatlar loglarini ko'rish
docker compose logs
# Ma'lum bir xizmat loglarini ko'rish (masalan core)
docker compose logs coreKeng tarqalgan muammolar
1. Docker login xatosi: x509: certificate signed by unknown authority
Bu xato self-signed sertifikat ishlatganda yuzaga keladi. Yechim — Docker daemon ga sertifikatni qo'shish:
# Harbor sertifikatini Docker trust papkasiga nusxalash
sudo mkdir -p /etc/docker/certs.d/harbor.helm.uz
sudo cp /path/to/ca.crt /etc/docker/certs.d/harbor.helm.uz/
# Docker xizmatini qayta ishga tushirish
sudo systemctl restart docker2. Harbor UI ochilmaydi yoki 502 Bad Gateway xatosi
# Barcha Harbor konteynerlarini tekshirish
cd /path/to/harbor
docker compose ps
# Agar konteynerlar ishlamayotgan bo'lsa
docker compose down
docker compose up -d
# Core xizmat loglarini tekshirish
docker compose logs core
docker compose logs proxy3. Disk maydoni to'lib qoldi
# Disk maydonini tekshirish
df -h /data
# GC ni qo'lda ishga tushirish (Harbor UI dan yoki API orqali)
# Yoki eski, ishlatilmagan imagelarni o'chirish
# Docker tizim darajasida tozalash
docker system prune -a4. SSL sertifikatni yangilash (Let's Encrypt)
Let's Encrypt sertifikatlari 90 kun amal qiladi. Avtomatik yangilash uchun:
# Sertifikatni qo'lda yangilash
sudo certbot renew
# Yangilangandan keyin Harborni qayta ishga tushirish
cd /path/to/harbor
docker compose down
docker compose up -dAvtomatik yangilash uchun crontab ga qo'shing:
# Har oyda sertifikatni tekshirish va yangilash
0 3 1 * * certbot renew --quiet && cd /path/to/harbor && docker compose restart5. Image push/pull sekin ishlayapti
# Harbor registryning disk I/O ni tekshirish
iostat -x 1 5
# Harbor konteynerlar resurslarini tekshirish
docker stats
# Redis ulanishini tekshirish
docker compose logs redisSiz shu qismgacha yetib kelgan bo'lsangiz tabriklayman, siz buni muvaffaqiyatli uddaladingiz!
Sana: 2024.11.15 (2024-yil 15-noyabr)
Oxirgi yangilanish: 2026.02.12 (2026-yil 12-fevral)
Muallif: Otabek Ismoilov
| Telegram (opens in a new tab) | GitHub (opens in a new tab) | LinkedIn (opens in a new tab) |
|---|