1\\. Multi\\-stage builds
FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .
FROM alpine:3.20
COPY --from=builder /app/myapp /usr/local/bin/
ENTRYPOINT ["myapp"]
Минимизирует размер и зависимости контейнера.
2\\. Squash layers
docker build --squash -t myapp:latest .
Сжимает слои в один.
3\\. BuildKit secrets
RUN --mount=type=secret,id=token git clone git@github.com:corp/private.git
Безопасное использование ключей.
4\\. .dockerignore
node_modules
*.md
Ускоряет сборку.
5\\. HEALTHCHECK
HEALTHCHECK CMD curl -f http://localhost/healthz || exit 1
Контейнер сам сообщает, что он еще жив.
6\\. CLI --format
docker ps --format '{{.Names}}\t{{.Status}}'
Удобный вывод для скриптов.
7\\. Оптимизация Dockerfile
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
Стабильные шаги выше — быстрее кеш.
8\\. Лимиты ресурсов
docker run --cpus=1 --memory=512m app
Ограничивает потребление ресурсов.
9\\. docker events
docker events --filter type=container --filter event=start
Реагируйте на события демона.
10\\. Read-only
docker run --read-only --tmpfs /tmp app
Файловая система только для чтения.
11\\. docker system prune
docker system prune -a --volumes
Удаляет всё ненужное.
12\\. ENTRYPOINT override
docker run --entrypoint /bin/sh -it app
Отладка падающих контейнеров.
13\\. Docker contexts
docker context create prod --docker "host=ssh://user@host"
docker context use prod
Быстрое переключение между окружениями.
📌 Подробнее
@Docker





