TGViewer
DevOps Portal | Linux DevOps Portal | Linux @loose_code · 13.1K subscribers
Post #2049 2.24K
Что такое Distroless-образ контейнера? 🧐

Go известен своими статически слинкованными бинарниками. Можно взять исполняемый файл Go, положить его в контейнер с FROM scratch - и на этом закончить.

Но у такого подхода есть несколько проблем...

1. В контейнерах FROM scratch нет нормального управления пользователями

Базовый образ scratch — это буквально пустой образ. Поэтому файлов /etc/passwd и /etc/group там просто нет.

Из-за этого контейнеризированный процесс в большинстве случаев запускается от root.

2. В FROM scratch отсутствуют некоторые важные директории

/tmp, /root, /home, /var, /etc — ничего из этого в scratch-контейнере нет, если, конечно, вы не примонтируете нужные директории самостоятельно.

Из-за этого приложение может работать некорректно — попробуйте, например, создать временный файл и посмотрите, что произойдёт 😉

3. В FROM scratch нет CA-сертификатов и данных о часовых поясах

Нужно обратиться к HTTPS-эндпоинту? Не получится.

Нужно выполнить преобразование времени между часовыми поясами? Тоже не получится.

4. В FROM scratch нет runtime вашего языка

Если поддержка статической линковки в вашем языке не настолько хороша, как в Go, либо приложению нужен интерпретатор или runtime-окружение, использовать scratch-контейнеры становится практически невозможно.

Distroless-образы как раз решают эти проблемы, при этом оставаясь максимально близкими к подходу FROM scratch.

Хороший пример — проект GoogleContainerTools/distroless. В нём есть следующие базовые образы:
- distroless/static = scratch + структура директорий, похожая на обычный дистрибутив, /etc/{passwd,group}, CA-сертификаты и данные о часовых поясах
- distroless/base = distroless/static + glibc
- distroless/cc = distroless/base + libgcc

Также есть несколько специализированных под конкретные языки, но всё ещё distroless-образов:
- distroless/java — для Java 17, 21 и 25
- distroless/nodejs — для Node.js 22, 24 и 26
- distroless/python3 — соответственно, для Python 3

Но существуют и другие проекты и продукты.

Подробнее о distroless-образах - в туториале iximiuz Labs:
https://labs.iximiuz.com/tutorials/gcr-distroless-container-images

👉 DevOps Portal
  • 👍 5
  • ❤ 4
  • 🔥 2
More from @loose_code
  1. Sep 26, 2026Docker 101: пробрасываем порт контейнера, чтобы открыть приложение с хоста Новое практичес…
  2. Sep 25, 2026Автоматизация платформы не отбирает у вас интересные задачи. Она забирает рутину. Deckhous…
  3. Sep 25, 2026Этот кейс показывает, как мигрировать с хрупкой инфраструктуры на базе EC2 на AWS EKS с Gi…
  4. Sep 25, 2026ИИ-агенты теперь могут работать как отдельные участники команды в GitLab В SourceCraft поя…
  5. Sep 25, 2026Анатомия Terraform-проекта До сих пор путаетесь в Terraform-файлах и структуре директорий?…
  6. Sep 24, 2026На Stepik вышла программа «DevOps с нуля: от Linux до Kubernetes» Это комплексная программ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →