Это удобно, когда вы настроили свой Dockerfile на запуск от имени пользователя, не являющегося пользователем root, но вам необходимо временно отладить или протестировать что-либо.
🐳 Почему процессы в контейнерах Docker не должны запускаться от имени Root
Это намного проще, чем можно было бы ожидать, и не требует использования sudo или знания/установки пароля root!
Вы можете запустить свой проект любым другим способом, например, с помощью Docker Compose или прямого Docker.
Тогда вы сможете войти в контейнер с правами root, даже если в Dockerfile задан USER someone:
Вот как это сделать с помощью Docker Compose:
Вот как это сделать с помощью Docker:
Это должно работать на большинстве образов на базе Linux.
Технически использование -u 0 тоже работает, поскольку в Linux-системах идентификатор пользователя 0 часто ассоциируется с пользователем root.
На практике я предпочитаю использовать root вместо 0, поскольку это ещё не давало сбоев ни на одном Docker-образе на базе Debian, и я делаю это только в разработке для одноразовых отладочных сессий.
Теперь вы можете устанавливать системные пакеты или работать с корневыми файлами для устранения неполадок, над которыми вы работаете, не прибегая к изменению Dockerfile и перестройке образа для временной отладочной сессии.
см. также:
- 🐳 Расширенная безопасность Docker
- 🐳 Расширенная безопасность Docker Часть II
- ☸️ Как узнать, что находится в образах контейнеров
- 🐳 Настройка Docker контейнера Ubuntu с доступом по SSH
- 🔑 Как развернуть Vaultwarde
- 🐳 Проверка образов и контейнеров Docker с помощью VirusTotal: пошаговое руководство
- 🔐 Примеры команд trust на Linux