Ответ
По умолчанию контейнер Docker запускается от пользователя root (UID 0). Это создает риски для безопасности, особенно если контейнеру скомпрометированы и получает доступ к хосту.
Как изменить пользователя:
-
В Dockerfile: Используйте инструкцию
USER.FROM alpine:latest RUN addgroup -g 1001 -S appgroup && adduser -u 1001 -S appuser -G appgroup USER appuser:appgroup COPY --chown=appuser:appgroup app /app CMD ["/app/start.sh"] -
При запуске контейнера: Используйте флаг
--user.docker run --user 1001:1001 my-image:latestМожно указать как UID/GID, так и имя пользователя/группы, если они существуют внутри образа.
Практические рекомендации:
- Всегда запускайте production-контейнеры от непривилегированного пользователя.
- Создавайте пользователя и группу на этапе сборки образа (как в примере выше), а не в рантайме.
- Для доступа к определенным ресурсам (например, порту 80/443) используйте
setcapили запускайте контейнер с--cap-add, а не от root. - Убедитесь, что файлы, копируемые в образ (
COPY), имеют правильные права (используйте--chown).