Вход в контейнер с правами Root без Sudo или пароля

Это удобно, когда вы настроили свой Dockerfile на запуск от имени пользователя, не являющегося пользователем root, но вам необходимо временно отладить или протестировать что-либо.

Это намного проще, чем можно было бы ожидать, и не требует использования sudo или знания/установки пароля root!

Вы можете запустить свой проект любым другим способом, например, с помощью Docker Compose или прямого Docker.

Тогда вы сможете войти в контейнер с правами root, даже если в Dockerfile задан USER someone:

 

Вот как это сделать с помощью Docker Compose:

docker-compose exec -u root [SERVICE] bash

 

Вот как это сделать с помощью Docker:

  $ docker container exec -it -u root [CONTAINER] bash

 

Это должно работать на большинстве образов на базе Linux.

Технически использование -u 0 тоже работает, поскольку в Linux-системах идентификатор пользователя 0 часто ассоциируется с пользователем root.

На практике я предпочитаю использовать root вместо 0, поскольку это ещё не давало сбоев ни на одном Docker-образе на базе Debian, и я делаю это только в разработке для одноразовых отладочных сессий.

Теперь вы можете устанавливать системные пакеты или работать с корневыми файлами для устранения неполадок, над которыми вы работаете, не прибегая к изменению Dockerfile и перестройке образа для временной отладочной сессии.