С какими инструментами контейнеризации вы работали?

«С какими инструментами контейнеризации вы работали?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основной опыт — это Docker и Docker Compose для оркестрации многоконтейнерных приложений в среде разработки и на staging. Работал с образами, сетями, томами и оптимизацией Dockerfile через многоступенчатые сборки для уменьшения итогового размера образа.

Пример многоступенчатого Dockerfile для Go-приложения:

# Этап сборки
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o /app/main ./cmd/app

# Финальный этап
FROM alpine:latest
RUN apk --no-cache add ca-certificates tzdata
WORKDIR /root/
COPY --from=builder /app/main .
EXPOSE 8080
CMD ["./main"]

Также имею опыт работы с Kubernetes в production: писал манифесты для Pod'ов, Deployments, StatefulSets, Services (включая LoadBalancer и Ingress), ConfigMaps и Secrets. Использовал Helm для управления релизами сложных приложений (например, мониторинг-стека Prometheus+Grafana). Настраивал HPA для автоматического масштабирования и Liveness/Readiness пробы.