Docker стал незаменимым инструментом в современном DevOps и разработке. Он позволяет изолировать окружения, упрощать деплой и быстро масштабировать приложения. Однако по умолчанию Docker требует root-доступа, и это создает потенциально опасную зону, которую часто игнорируют на ранних этапах.
Почему Docker работает от root?
Docker использует возможности ядра Linux: cgroups, namespaces, iptables, mount, networking и другие системные функции. Эти операции доступны только суперпользователю.
Вот почему:
* демон dockerd запускается от root,
* команды docker передаются этому демону.
Это упрощает работу и даёт полный контроль над системой, но вместе с этим и открывает потенциальные уязвимости.
Чем это опасно: container breakout, CVE, RCE
Container breakout
При слабой изоляции злоумышленник может использовать chroot или pivot_root для выхода на хост.
Примеры реальных атак:
* CVE-2019-5736 — уязвимость в runc, позволяла перезаписать приложение и выполнить код на хосте.
* CVE-2021-3156 — уязвимость в sudo, позволяла получить root внутри контейнера и выбраться наружу.
RCE (Remote Code Execution)
Если приложение в контейнере уязвимо и запускается от root, RCE = полный контроль над хостом.

Rootless Docker: решение проблемы
Чтобы минимизировать эти риски, в Docker появился rootless-режим. В этом режиме и демон, и контейнеры запускаются от имени обычного пользователя, без каких-либо root-привилегий. Это означает, что даже если злоумышленник получит контроль над контейнером, он не сможет навредить хостовой системе.
Есть и ограничения: нельзя использовать порты ниже 1024 (например, 80 и 443), недоступен режим –privileged, а также некоторые сетевые режимы. Однако в большинстве сценариев разработки и CI/CD rootless Docker прекрасно справляется со своей задачей и значительно повышает уровень безопасности.
Исторически запуск от root — антипаттерн
В мире UNIX/Linux с самого начала действует принцип наименьших привилегий. Чем меньше прав у процесса — тем меньше вреда он может нанести. Docker изначально требовал root-доступ, но сегодня это считается потенциальной угрозой.
Источники
https://docs.docker.com/engine/security/rootless/
https://rootlesscontaine.rs/