1.1 Docker Images əsasları
Docker Images (Docker obrazları) Docker konteynerlərinin bazasıdır. Onlar tətbiqlərin işləməsi üçün lazım olan hər şeyi özündə birləşdirir: kod, kitabxanalar, asılılıqlar, alətlər və konfiqurasiya faylları. Docker Images-in nə olduğunu və necə strukturlaşdırıldığını başa düşmək Docker-dən effektiv istifadə etmək üçün vacibdir.
Docker Image — bu dəyişməz
bir şablondur, hansı ki, konteynerlərin yaradılması üçün istifadə olunur. O, tətbiqin izolyasiya olunmuş mühitdə işləməsi üçün bütün lazım olan komponentləri ehtiva edir. Konteyner işlədikdə, Docker obyekti yaradır və onu işə salır.
Docker Images-in əsas xüsusiyyətləri:
- Dəyişməzlik: Docker obrazları dəyişməzdir. Konteynerdə baş verən hər hansısa dəyişiklik ilkin obrazı təsir etmir. Obrazın məzmununu dəyişdirmək üçün yeni bir obraz yaratmaq lazımdır.
- Laylı struktur: Docker Images bir neçə təbəqədən ibarətdir. Hər təbəqə əvvəlki təbəqədən fərqli bir dəyişiklikdir. Bu isə təbəqələrin təkrar istifadəsi hesabına yaddaşı effektiv istifadə etməyə imkan verir.
- İdentifikasiya: Hər bir obraz unikal identifikatora malikdir (SHA256 hash), həmçinin bir və ya bir neçə tag ilə versiyaların rahat idarə edilməsini təmin edir.
Docker Images-in strukturu
Docker Images-in laylı strukturu var, burada hər bir təbəqə fayl sistemidir. Bu təbəqələr Docker keşində saxlanılır və digər obrazlar tərəfindən təkrar istifadə edilə bilər. Laylı struktur Docker obrazlarını yüngül və effektiv edir.
Docker Images-in əsas komponentləri:
- Baza təbəqə (Base Layer): Obrazın başlanğıc təbəqəsi, hansı ki, tez-tez digər obrazların yaradılması üçün baza kimi istifadə olunur. Məsələn, bu minimal bir əməliyyat sistemi versiyası ola bilər, məsələn, Ubuntu və ya Alpine Linux.
- Ara təbəqələr (Intermediate Layers): Bu təbəqələr Dockerfile daxilində yerinə yetirilən əmrlər əsasında yaradılır (məsələn, paketlərin quraşdırılması, faylların kopyalanması və s.). Hər təbəqə əvvəlki təbəqəyə dəyişikliklər əlavə edir.
- Son təbəqə (Final Layer): CMD, ENTRYPOINT təlimatları və ya konteyner daxilində dəyişikliklər əsasında yaradılan son təbəqə "konteyner" təbəqəsi adlanır. Bu təbəqə müvəqqətidir və yalnız konteyner işlədikdə mövcuddur.
1.2 Docker Images qatları necə işləyir
Hər bir Docker image qatı əvvəlki qata nisbətdə dəyişikliklərdən ibarətdir. Docker image yaradanda, Dockerfile-dakı hər bir təlimatı icra edir və hər bir dəyişiklik üçün yeni qat yaradır.
Qatların yaradılma nümunəsi:
- Əsas image: Əsas image-dən başlayaq, məsələn, ubuntu:20.04. Bu bizim ilk qatımız olacaq.
- Paketlərin quraşdırılması:
RUN apt-get update && apt-get install -y python3
komandası Python quraşdırılmış yeni bir qat yaradacaq. - Faylların köçürülməsi:
COPY . /app
komandası tətbiq fayllarını yeni qata əlavə edəcək. - İşçi qovluğun təyin olunması:
WORKDIR /app
komandası qat yaradacaq, hansı ki işçi qovluğu növbəti komandalar üçün təyin edəcək.
Qatların istifadəsinin üstünlükləri:
- Təkrar istifadə: Qatlar digər imagelər tərəfindən təkrar istifadə oluna bilər. Əgər iki image eyni əsas qatı istifadə edirsə, Docker onu yalnız bir dəfə yükləyəcək, bu da yer və vaxt qənaəti edir.
- Keşləmə: Docker qatları keşləyir, bu da image yığma prosesini sürətləndirir. Əgər qat dəyişməyibsə, Docker onu keşdən istifadə edir, təkrar yığmır.
- Modulyarlıq: Qatlı struktur imageləri modulyar şəkildə inkişaf etdirməyə imkan tanıyır. Siz ayrı-ayrı qatları yeniləyə və ya dəyişdirə bilərsiniz, bütün image-ə toxunmadan.
Docker Images-in identifikasiyası və tag-lar
Hər bir Docker Image unikal bir hash (SHA256) ilə identifikasiya olunur. Bu hash image-in və onun bütün qatlarının məzmununa əsasən yaradılır. Bundan əlavə, idarəetmə və versiyalaşdırmanı asanlaşdırmaq üçün Docker images tag-lara sahib ola bilər.
Image-in identifikasiyası nümunəsi:
Bu nümunə komanda sisteminizdəki bütün imagelərin siyahısını göstərəcək, o cümlədən onların repositoriyası, tag-ları, identifikatorları və ölçüləri.
docker images
1.3 Docker Images ilə iş
Docker müxtəlif əmrlər təqdim edir ki, bu əmrlərlə image-lərlə işləmək mümkündür. Onlardan bəziləri:
- Image yaratmaq:
docker build
- Image-dən konteyner işə salmaq:
docker run
- Image-lərin siyahısı:
docker images
- Image silmək:
docker rmi
- Docker Hub-da image-lər axtarmaq:
docker search
- Docker Hub-dan image yükləmək:
docker pull
- Docker Hub-a image göndərmək:
docker push
Docker Image yaratmaq və istifadə etmək nümunəsi
1. Dockerfile yaratmaq:
# Əsas olaraq Ubuntu image istifadə olunur
FROM ubuntu:20.04
# Python quraşdırılır
RUN apt-get update && apt-get install -y python3
# Tətbiqin faylları konteynerə kopyalanır
COPY . /app
# İşçi qovluq təyin olunur
WORKDIR /app
# Tətbiqi işə salmaq üçün əmr göstərilir
CMD ["python3", "app.py"]
2. Image-in qurulması:
Bu əmr, hazırkı qovluqdakı Dockerfile əsasında my_python_app
adlı image yaradır.
docker build -t my_python_app .
3. Image-dən konteyner işə salmaq:
Bu əmr, my_python_app
image-dən bir konteyneri fon rejimində işə salır.
docker run -d my_python_app
GO TO FULL VERSION