Estoy usando una imagen Docker que fue construida usando el comando USER para usar un usuario no root llamado dev
. Dentro de un contenedor, soy "dev", pero quiero editar el /etc/hosts
archivo.
Entonces necesito ser root. Estoy probando el comando su, pero se me pide que ingrese la contraseña de root.
¿Cuál es la contraseña predeterminada del usuario raíz dentro de un contenedor Docker?
docker exec -u 0 -it mycontainer bash
. (verH6
respuesta)Respuestas:
Puede iniciar sesión en el contenedor Docker utilizando el usuario raíz (ID = 0) en lugar del usuario predeterminado proporcionado cuando utiliza la
-u
opción. P.ejde la documentación de Docker
fuente
docker run -u 0 -it mycontainer bash
Finalmente, decidí reconstruir mis imágenes de Docker, para cambiar la contraseña de root por algo que sabré.
o
fuente
Hay un par de maneras de hacerlo.
Para ejecutar el Docker anulando la configuración de USUARIO
o
Haga los permisos de archivo necesarios, etc., durante la creación de la imagen en el archivo Docker
Si todos los paquetes están disponibles en su imagen de Linux,
chpasswd
en el dockerfile antes de la utilidad USER.fuente
Puedo hacerlo funcionar con el siguiente comando.
fuente
Tuve exactamente este problema de no poder su a root porque estaba corriendo en el contenedor como un usuario sin privilegios.
Pero no quería reconstruir una nueva imagen como sugieren las respuestas anteriores.
En cambio, descubrí que podía acceder al contenedor como root usando 'nsenter', consulte: https://github.com/jpetazzo/nsenter
Primero determine el PID de su contenedor en el host:
Luego use nsenter para ingresar al contenedor como root
fuente
sudo nsenter --target <PID> --mount --uts --ipc --net --pid
fuente
Obtenga un shell de su contenedor en ejecución y cambie la contraseña de root:
fuente
Para crear / cambiar una contraseña de root en un contenedor en ejecución
fuente
La contraseña es 'ubuntu' para el usuario 'ubuntu' (al menos en docker para ubuntu: 14.04.03).
NB: 'ubuntu' se crea después del inicio del contenedor, así que si solo haces esto:
Obtendrá el indicador raíz directamente. Desde allí, puede forzar el cambio de contraseña de root, confirmar el contenedor y, opcionalmente, etiquetarlo (con -f) en ubuntu: último como este:
Debe reconstruir sus eventuales dependencias en ubuntu: latest.
fuente
Sugeriría una mejor solución es dar el
--add-host NAME:IP
argumento a Docker Run al iniciar el contenedor. Eso actualizará el/etc/hosts/
archivo sin necesidad de convertirse en root.De lo contrario, puede anular la
USER
configuración dando la-u USER
bandera adocker run
. Sin embargo, desaconsejaría esto, ya que realmente no debería estar cambiando las cosas en un contenedor en ejecución. En su lugar, realice sus cambios en un Dockerfile y cree una nueva imagen.fuente
-u
bandera para cambiar de usuario. No creo que puedas hacerlo desde el interior del contenedor.Puede usar el comando root del USUARIO en su Dockerfile.
fuente
Cuando inicies el contenedor, serás root pero no sabrás cuál es la raíz de pw. Para establecerlo en algo que conozca, simplemente use "passwd root". Instantánea / confirme el contenedor para guardar sus acciones.
fuente
Por defecto, los contenedores Docker se ejecutan como el
root
usuario.Si todavía está usando el contenedor, puede usar el
exit
comando para volver alroot
usuario (usuario predeterminado) en lugar de volver a ejecutar el contenedor.Ejemplo
fuente
pruebe el siguiente comando para obtener el acceso raíz
fuente
En algunos casos, debe poder hacer cosas así con un usuario
sudo
(por ejemplo, la aplicación que se ejecuta en el contenedor proporciona un shell a los usuarios). Simplemente agregue esto en su Dockerfile:Ahora, con el usuario de imagen predeterminado
user
, podrá hacerlosudo
con la contraseña establecida en la línea 3.Vea cómo generar hash de contraseña
useradd
aquí o aquí .fuente