7.1 Baza imic
Baza imiclər Docker-imiclərin yaradılmasında əsas rol oynayır, çünki onlar yığma üçün başlanğıc nöqtəsini təmin edir və tətbiqinizin işləyəcəyi mühiti müəyyən edir. Düzgün baza imic seçimi və sazlanması nəticə imicinin performansına, ölçüsünə və təhlükəsizliyinə əhəmiyyətli dərəcədə təsir edə bilər. Bu mühazirədə Docker-ə baza imiclərin necə seçildiyini və sazlandığını nəzərdən keçirəcəyik.
Baza imic (və ya əsas imic) — bu, yeni Docker-imic yaratmaq üçün başlanğıc qat kimi istifadə olunan Docker-imicdir. O, əməliyyat sistemini və ehtiyac duyulan minimal alət və kitabxanalar dəstini əhatə edə bilər. Baza imicin seçimi, konteynerinizdə hansı paketlərin və kitabxanaların mövcud olacağını müəyyən edir.
Baza imicin seçilməsi
Baza imici seçərkən bir neçə amili nəzərə almaq lazımdır:
- İmicin ölçüsü: Kiçik imiclər adətən daha tez yüklənir və diskin daha az yer tutmasına səbəb olur.
- Dəstək və yeniləmələr: Rutin olaraq yenilənən rəsmi imiclərdən istifadə təhlükəsizlik və sabitlik səviyyəsini artırır.
- Uyğunluq: Baza imic tətbiqiniz üçün lazım olan kitabxanaları və asılılıqları dəstəkləməlidir.
Populyar baza imiclər
1. Alpine Linux
Təxminən 5 MB ölçüsündə çox yüngül imicdir. Minimal sistem tələbləri olan tətbiqlər üçün uyğundur.
FROM alpine:3.12
2. Debian/Ubuntu
Daha çox funksionallığı olan imiclərdir və daha çox alət və kitabxanaları əhatə edir. Daha tam mühit tələb edən mürəkkəb tətbiqlər üçün uyğundur.
FROM ubuntu:20.04
3. Official Language Images
Proqramlaşdırma dilləri üçün rəsmi imiclər, məsələn, Node.js, Python, Ruby və digər dillər. Bu imiclər müvafiq dildə tətbiqləri inkişaf etdirmək və işlətmək üçün lazım olan mühiti təmin edir.
FROM node:14
7.2 Bazis imicin sazlanması
Bazis imic seçildikdən sonra, onu sizin tətbiqinizin tələblərinə uyğun olaraq sazlamaq lazımdır. Sazlama, lazım olan paketlərin quraşdırılması, tətbiqin fayllarının köçürülməsi və mühitin sazlanmasını əhatə edir.
Nümunə: Alpine Linux əsasında bazis imicin sazlanması
# Alpine Linux bazis imicindən istifadə edirik
FROM alpine:3.12
# Lazım olan paketləri quraşdırırıq
RUN apk add --no-cache python3 py3-pip
# İşçi direktoriya təyin edirik
WORKDIR /app
# Tətbiq fayllarını köçürürük
COPY . .
# Asılılıqları quraşdırırıq
RUN pip3 install -r requirements.txt
# Tətbiqi işə salmaq üçün komanda göstəririk
CMD ["python3", "app.py"]
Bu nümunədə alpine:3.12 bazis imicindən istifadə olunur, lazım olan paketlər quraşdırılır, tətbiq faylları köçürülür və asılılıqlar quraşdırılır. Sonuncu komanda alpine:3.12
tətbiqin necə işə salınacağını göstərir.
Nümunə: Ubuntu əsasında bazis imicin sazlanması
# Ubuntu bazis imicindən istifadə edirik
FROM ubuntu:20.04
# Yeniləmə aparır və lazım olan paketləri quraşdırırıq
RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
&& rm -rf /var/lib/apt/lists/*
# İşçi direktoriya təyin edirik
WORKDIR /app
# Tətbiq fayllarını köçürürük
COPY . .
# Asılılıqları quraşdırırıq
RUN pip3 install -r requirements.txt
# Tətbiqi işə salmaq üçün komanda göstəririk
CMD ["python3", "app.py"]
Bu Dockerfile ubuntu:20.04 imicindən istifadə edir və Python ilə pip-i quraşdırır. Daha sonra tətbiq fayllarını köçürür və asılılıqları quraşdırır, əvvəlki nümunəyə oxşar şəkildə.
7.3 Ən yaxşı təcrübələr
Əsas image-lərin seçilməsi və qurulması üzrə ən yaxşı təcrübələr
1. Minimal image-lərdən istifadə: Proqramınızın tələblərini ödəyən ən kiçik image-lərlə başlayın. Bu, yekun image ölçüsünü azaltmağa və təhlükəsizliyi artırmağa kömək edir.
2. Lazımsız paketlərin quraşdırılmasından qaçının: Yalnız proqramınız üçün zəruri olan paketləri və asılılıqları quraşdırın. Bu, image ölçüsünü azaldır və həssaslıqları azaldır.
3. Paket menecerlərinin keşini silin: Paketləri quraşdırdıqdan sonra paket menecerlərinin keşini silin ki, image ölçüsü azalsın.
RUN apt-get update && apt-get install -y python3 python3-pip && rm -rf /var/lib/apt/lists/*
4. Multi-stage build-dən istifadə: Multi-stage build qurma və icra mərhələlərini ayırmağa imkan verir ki, bu da daha yüngül və təhlükəsiz image-lər yaratmağa kömək edir.
# Build mərhələsi
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# Final mərhələ
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html
5. Image-ləri yeniləmək: Əsas image-lərin mütamadi olaraq yenilənməsi təhlükəsizlik yamaları və yeniləmələri daxil etmək üçün vacibdir.
GO TO FULL VERSION