Ответ
Нет, по умолчанию пользователи хоста и контейнера изолированы. Контейнеры используют собственное пространство имён пользователей (User namespace). Пользователи внутри контейнера определяются его образом (например, через инструкции USER и RUN useradd в Dockerfile).
Как можно сопоставить пользователей:
-
Запуск контейнера с конкретным UID/GID: Самый частый и безопасный способ. Контейнер запускается от указанного идентификатора, но имя пользователя в
/etc/passwdконтейнера может не существовать.docker run -u $(id -u):$(id -g) -v /host/path:/container/path my-imageЭто полезно для правильного управления правами на смонтированных томах.
-
Монтирование файлов
/etc/passwdи/etc/group(не рекомендуется для продакшена): Позволяет контейнеру "видеть" пользователей хоста.docker run -v /etc/passwd:/etc/passwd:ro -v /etc/group:/etc/group:ro my-image⚠️ Риск безопасности: Может раскрыть информацию о системе и привести к конфликтам UID.
-
Создание пользователей в Dockerfile: Правильный подход — определять необходимых пользователей на этапе сборки образа.
FROM alpine RUN addgroup -g 1001 appgroup && adduser -u 1001 -G appgroup -D appuser USER appuser
Лучшая практика: Используйте инструкцию USER в Dockerfile для запуска процессов от непривилегированного пользователя, созданного внутри образа.