CodeGym /Kursy /Docker SELF /Wybór podstawowego obrazu

Wybór podstawowego obrazu

Docker SELF
Poziom 14 , Lekcja 1
Dostępny

7.1 Bazowy obraz

Bazowe obrazy odgrywają ważną rolę w tworzeniu obrazów Docker, ponieważ są punktem początkowym do budowania i definiują środowisko, w którym będzie działać twoja aplikacja. Właściwy wybór i konfiguracja bazowych obrazów mogą znacząco wpłynąć na wydajność, rozmiar i bezpieczeństwo końcowego obrazu. W tym wykładzie omówimy, jak wybrać i skonfigurować bazowe obrazy dla Dockera.

Bazowy obraz (lub obraz-podstawa) — to obraz Docker, który jest używany jako początkowa warstwa do stworzenia nowego obrazu Docker. Może zawierać minimalny system operacyjny, potrzebne narzędzia i biblioteki lub być nawet pusty (scratch-obrazu). Wybór bazowego obrazu określa, jakie zasoby i pakiety będą dostępne w twoim kontenerze domyślnie.

Wybór bazowego obrazu

Przy wyborze bazowego obrazu należy wziąć pod uwagę kilka czynników:

  1. Rozmiar obrazu: Mniejsze obrazy szybciej się pobierają, zajmują mniej miejsca na dysku i mogą przyspieszyć wdrażanie aplikacji.
  2. Wsparcie i aktualizacje: Używanie oficjalnych obrazów z regularnymi aktualizacjami zapewnia wyższy poziom bezpieczeństwa, naprawę podatności i stabilność pracy.
  3. Kompatybilność: Bazowy obraz powinien zawierać potrzebne biblioteki i zależności, które są wymagane dla twojej aplikacji, aby działała poprawnie.

Popularne bazowe obrazy

1. Alpine Linux

Bardzo lekki obraz, zajmujący około 5 MB. Jest idealny dla aplikacji, które wymagają minimalnego systemu operacyjnego. Jednak programiści powinni pamiętać, że Alpine nie zawiera wielu standardowych bibliotek, więc dla niektórych aplikacji może być potrzebna dodatkowa konfiguracja.

dockerfile

FROM alpine:3.12

2. Debian/Ubuntu

Bardziej rozbudowane obrazy, które zawierają szeroki zestaw narzędzi i bibliotek. Nadają się do złożonych aplikacji, które wymagają bardziej kompletnego środowiska lub dobrze znanej standardowej biblioteki Linux.

dockerfile

FROM ubuntu:20.04 

3. Oficjalne obrazy języków programowania

Oficjalne obrazy dla języków programowania, takie jak Node.js, Python, Ruby i inne. Te obrazy już zawierają potrzebne środowisko dla opracowywania i uruchamiania aplikacji w odpowiednim języku, co upraszcza konfigurację.

dockerfile

FROM node:14 

7.2 Konfiguracja obrazu bazowego

Po wybraniu obrazu bazowego, należy go dostosować do wymagań Twojej aplikacji. Konfiguracja obejmuje instalację niezbędnych pakietów, kopiowanie plików aplikacji oraz ustawienie środowiska.

Przykład: Konfiguracja obrazu bazowego na podstawie Alpine Linux

dockerfile


# Używamy obrazu bazowego Alpine Linux
FROM alpine:3.12
        
# Instalujemy niezbędne pakiety
RUN apk add --no-cache python3 py3-pip
        
# Ustawiamy katalog roboczy
WORKDIR /app
        
# Kopiujemy pliki aplikacji
COPY . .
        
# Instalujemy zależności
RUN pip3 install -r requirements.txt
        
# Wskazujemy polecenie do uruchomienia aplikacji
CMD ["python3", "app.py"]

W tym przykładzie używany jest obraz bazowy alpine:3.12, instalowane są niezbędne pakiety, kopiowane są pliki aplikacji i instalowane są zależności. Końcowe polecenie alpine:3.12 określa, jak uruchomić aplikację.

Przykład: Konfiguracja obrazu bazowego na podstawie Ubuntu

dockerfile


# Używamy obrazu bazowego Ubuntu
FROM ubuntu:20.04
        
# Aktualizujemy i instalujemy niezbędne pakiety
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*
        
# Ustawiamy katalog roboczy
WORKDIR /app
        
# Kopiujemy pliki aplikacji
COPY . .
        
# Instalujemy zależności
RUN pip3 install -r requirements.txt
        
# Wskazujemy polecenie do uruchomienia aplikacji
CMD ["python3", "app.py"] 

Ten Dockerfile używa obrazu ubuntu:20.04 i instaluje Python oraz pip. Następnie kopiuje pliki aplikacji i instaluje zależności, podobnie jak w poprzednim przykładzie.

7.3 Najlepsze praktyki

Jak odpowiednio wybierać i konfigurować podstawowe obrazy:

1. Wybieraj minimalne obrazy: zacznij od najmniejszych obrazów, które spełniają wymagania Twojej aplikacji. Zmniejszy to rozmiar końcowego obrazu i zwiększy bezpieczeństwo.

2. Nie instaluj niepotrzebnych pakietów: instaluj tylko te zależności, które są rzeczywiście potrzebne Twojej aplikacji. Zmniejszy to rozmiar obrazu i ograniczy liczbę potencjalnych luk w zabezpieczeniach.

3. Czyść cache menedżerów pakietów: po zainstalowaniu pakietów usuwaj pliki tymczasowe i cache, aby zmniejszyć rozmiar obrazu.

dockerfile


RUN apt-get update && apt-get install -y python3 python3-pip && rm -rf /var/lib/apt/lists/*

4. Używaj wieloetapowego builda: pozwala on na podzielenie etapów budowania i wykonywania, co pomaga stworzyć lżejsze i bezpieczniejsze obrazy.

Terminal

        
# Etap budowania
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
        
# Finalny etap
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html

5. Regularnie aktualizuj obrazy: używaj najnowszych wersji podstawowych obrazów, aby uwzględniać najnowsze poprawki bezpieczeństwa i aktualizacje.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION