Ответ
Alpine Linux — это сверхлегкий дистрибутив (~5 МБ), используемый в качестве базового образа Docker для создания минималистичных и безопасных контейнеров.
Основные преимущества и цели использования:
- Уменьшение размера образа: Меньший вес приводит к ускорению сборки, скачивания (pull) и развертывания. Это критично для CI/CD пайплайнов и микросервисных архитектур.
- Повышение безопасности: Меньшая «поверхность атаки» (attack surface) из-за минимального набора установленных пакетов и использования
musl libcвместоglibc. - Идеален для одноцелевых контейнеров: Например, для запуска статически скомпилированного Go-приложения, Node.js скрипта или Python-скрипта с минимальными зависимостями.
Пример Dockerfile для Python-приложения:
FROM alpine:3.18
# Используем менеджер пакетов apk с флагом --no-cache, чтобы не хранить кеш индекса
RUN apk add --no-cache python3 py3-pip
WORKDIR /app
COPY requirements.txt .
RUN pip3 install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python3", "app.py"]
Важные нюансы:
- Совместимость: Некоторые бинарные пакеты (например, некоторые нативные расширения Python) скомпилированы под
glibcи могут не работать в Alpine. В таких случаях используютubuntuилиdebian-slim. - Отладка: Базовый образ не содержит
bash,curlи других утилит. Их при необходимости добавляют на этапе сборки (apk add bash curl).