Я использую образ Docker, который был создан с помощью команды USER, чтобы использовать пользователя без полномочий root с именем dev
. Внутри контейнера я "dev", но я хочу отредактировать /etc/hosts
файл.
Так что мне нужно быть пользователем root. Я пытаюсь выполнить команду su, но меня просят ввести пароль root.
Какой пароль пользователя root по умолчанию находится внутри контейнера Docker?
docker exec -u 0 -it mycontainer bash
. (см.H6
ответ)Ответы:
Вы можете войти в контейнер Docker, используя пользователя root (ID = 0) вместо предоставленного пользователя по умолчанию при использовании этой
-u
опции. Напримериз документации Docker
источник
docker run -u 0 -it mycontainer bash
В конце концов, я решил перестроить свои образы Docker, чтобы я изменил пароль root на то, что я буду знать.
или
источник
Есть несколько способов сделать это.
Чтобы запустить Docker, переопределяющий настройку USER
или
Сделайте необходимые права доступа к файлу и т. Д. Во время сборки образа в файле Docker
Если все пакеты доступны в вашем образе Linux,
chpasswd
в файле docker перед утилитой USER.источник
Я могу заставить его работать с помощью приведенной ниже команды.
источник
У меня возникла именно эта проблема, связанная с невозможностью получить права суперпользователя, потому что я работал в контейнере как непривилегированный пользователь.
Но я не хотел перестраивать новый образ, как предлагают предыдущие ответы.
Вместо этого я обнаружил, что могу получить доступ к контейнеру как root с помощью 'nsenter', см. Https://github.com/jpetazzo/nsenter.
Сначала определите PID вашего контейнера на хосте:
Затем используйте nsenter для входа в контейнер как root
источник
sudo nsenter --target <PID> --mount --uts --ipc --net --pid
источник
Получите оболочку вашего работающего контейнера и измените пароль root:
источник
Создать / изменить пароль root в работающем контейнере
источник
Пароль для пользователя 'Ubuntu' 'Ubuntu' (по крайней мере, в Docker для Ubuntu: 14.04.03).
NB: «ubuntu» создается после запуска контейнера, поэтому, если вы просто сделаете это:
Вы получите приглашение root напрямую. Оттуда вы можете принудительно изменить пароль root, зафиксировать контейнер и при желании пометить его (с -f) в Ubuntu: последний, например, так:
Вы должны восстановить свои возможные зависимости от Ubuntu: последние.
источник
Я бы посоветовал лучшее решение - дать
--add-host NAME:IP
аргумент запуску Docker при запуске контейнера. Это обновит/etc/hosts/
файл без необходимости становиться пользователем root.В противном случае вы можете изменить
USER
настройку, установив-u USER
флажокdocker run
. Однако я бы посоветовал против этого, так как вы не должны менять вещи в работающем контейнере. Вместо этого внесите изменения в Dockerfile и создайте новый образ.источник
-u
флаг, чтобы изменить пользователя. Я не думаю, что вы можете сделать это из контейнера.Вы можете использовать корневую команду USER в своем Dockerfile.
источник
Когда вы запустите контейнер, вы будете пользователем root, но вы не будете знать, что такое pw root. Чтобы установить что-то, что вы знаете, просто используйте «пароль root». Сделайте снимок / зафиксируйте контейнер, чтобы сохранить ваши действия.
источник
По умолчанию Docker-контейнеры запускаются от имени
root
пользователя.Если вы все еще используете контейнер, вы можете использовать
exit
команду, чтобы вернуться кroot
пользователю (пользователь по умолчанию), вместо того, чтобы снова запускать контейнер.Пример -
источник
попробуйте следующую команду, чтобы получить root-доступ
источник
В некоторых случаях вам нужно иметь возможность делать такие вещи под пользователем
sudo
(например, приложение, запущенное в контейнере, предоставляет оболочку для пользователей). Просто добавьте это в свой Dockerfile:Теперь под пользователем изображения по умолчанию
user
вы сможетеsudo
установить пароль в строке 3.Посмотрите, как создать хэш пароля
useradd
здесь или здесь .источник