Пароль Root внутри контейнера Docker
Я использую изображение Docker, которое было построено с помощью команды USER для использования некорневого пользователя под названием dev.
Внутри контейнера я "dev", но я хочу отредактировать .
поэтому мне нужно быть root. Я пытаюсь выполнить команду su, но меня просят ввести пароль root.
каков пароль пользователя root по умолчанию внутри контейнера Docker?
10 ответов:
вы можете войти в контейнер Docker с помощью корневого пользователя (ID = 0) вместо предоставленного пользователя по умолчанию при использовании . Е. Г.
docker exec -u 0 -it mycontainer bashroot (id = 0) является пользователем по умолчанию в контейнере. Изображение разработчик может создавать дополнительных пользователей. Пользователям доступны имя. При передаче числового идентификатора, пользователь не должен существовать в контейнер.
В конце концов, я решил перестроить свои изображения Docker, чтобы изменить пароль root чем-то, что я буду знать.
RUN echo "root:Docker!" | chpasswdили
RUN echo "Docker!" | passwd --stdin root
у меня была именно эта проблема не в состоянии su для root, потому что я работал в контейнере как непривилегированный пользователь.
но я не хотел перестраивать новое изображение, как предполагают предыдущие ответы.
вместо этого я обнаружил, что могу получить доступ к контейнеру как root с помощью 'nsenter', см.:https://github.com/jpetazzo/nsenter
сначала определите PID вашего контейнера на хосте:
docker inspect --format {{.State.Pid}} <container_name_or_ID>затем используйте nsenter для введите контейнер как root
nsenter --target <PID> --mount --uts --ipc --net --pid
Я могу заставить его работать с ниже команду.
root@gitnew:# docker exec -it --user $(username) $(containername) /bin/bash
есть несколько способов сделать это.
чтобы запустить Докер, переопределяющий настройку пользователя
docker exec -u 0 -it containerName bashсделать необходимые разрешения для файлов и т. д., во время сборки образа в файле Docker
Если все пакеты доступны в вашем образе Linux,
chpasswdв dockerfile перед утилитой пользователя.
пароль "ubuntu" для пользователя "ubuntu" (по крайней мере, в docker для ubuntu :14.04.03).
NB: 'ubuntu' создается после запуска контейнера, поэтому, если вы просто сделаете это:
docker run -i -t --entrypoint /bin/bash ubuntuвы получите корневое приглашение напрямую. Оттуда вы можете принудительно изменить пароль root, зафиксировать контейнер и, возможно, пометить его (с -f) в ubuntu: latest следующим образом:
root@ec384466fbbb:~# passwd Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully root@ec384466fbbb:~# exit % docker commit ec3844 5d3c03e7d6d861ce519fe33b184cd477b8ad03247ffe19b2a57d3f0992d71bca docker tag -f 5d3c ubuntu:latestвы должны перестроить свои возможные зависимости от Убунту:последний.
Я бы предложил лучшее решение, чтобы дать
--add-host NAME:IPаргумент для запуска docker при запуске контейнера. Это обновит без какого-либо нужно стать суперпользователем.в противном случае, вы можете переопределить
USERнастройки путем предоставления-u USERфлагdocker run. Я бы посоветовал против этого, однако, так как вы не должны действительно менять вещи в работающем контейнере. Вместо этого внесите изменения в файл Dockerfile и создайте новый образ.
получить оболочку вашего запущенного контейнера и изменить пароль root:
docker exec -it <MyContainer> bash root@MyContainer:/# passwd Enter new UNIX password: Retype new UNIX password:
Comments