Linux Labs

Контейнеры: Docker и compose / Ступень 10 из 11

Лимиты, OOMKilled и пользователь в контейнере

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 6 из 9 · теория · 3 мин

Ключ --user

Пользователя главного процесса задаёт ключ --user при создании контейнера; docker exec по умолчанию идёт от того же пользователя.

Имя после --user docker ищет в /etc/passwd образа, а в alpine пользователя student нет. Числа работают всегда: --user 1000:1000 — это UID и GID student, только id внутри печатает их без имён.

bash
sudo docker run --rm --user student alpine id
# … unable to find user student: no matching entries in passwd file
sudo docker run --rm --user 1000:1000 alpine id
# uid=1000 gid=1000 groups=1000

Число после двоеточия — группа. Без него процесс получает группу 0, а это группа root.

Проверь себя 1 вопрос

Контейнер запущен с --user 1000 и создал файл в каталоге машины. Кого ls -l покажет владельцем и группой этого файла?

  • Владельца файлу даёт UID процесса, а он 1000 — это student. root остался только в группе.

  • Группу задаёт число после двоеточия в --user. Без него процесс работает с GID 0, и файл получает группу root.

Без GID после двоеточия процесс работает с группой 0. Файл получает владельца student и группу root, поэтому --user пишут парой: 1000:1000.

Главное в шаге

  • UID процесса в контейнере — тот же UID на машине: root внутри — root для подключённых файлов хоста.
  • --user UID:GID задаёт пользователя главного процесса; docker exec идёт от него же.
  • Имя в --user ищется в образе, числа работают всегда; без GID группа процесса — root.
Ubuntu 24.04
Загрузка…