subir imagenes imagen hub hacer crear contenedor comandos docker

imagenes - Contraseña de root dentro de un contenedor Docker



imagenes docker (13)

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 .

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?


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.


Finalmente, decidí reconstruir mis imágenes de Docker, para cambiar la contraseña de root por algo que sabré.

RUN echo "root:Docker!" | chpasswd

o

RUN echo "Docker!" | passwd --stdin root


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:

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

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: lo último como esto:

$ sudo -i

Debe reconstruir sus eventuales dependencias en ubuntu: latest.


Obtenga un shell de su contenedor en ejecución y cambie la contraseña de root:

docker run -i -t --entrypoint /bin/bash ubuntu


Por defecto, los contenedores Docker se ejecutan como usuario root .

Si todavía está usando el contenedor, puede usar el comando de exit para volver al usuario root (usuario predeterminado) en lugar de volver a ejecutar el contenedor.

Ejemplo

[dev@6c4c86bccf93 ~]$ ls [dev@6c4c86bccf93 ~]$ other-commands.. [dev@6c4c86bccf93 ~]$ exit [root@6c4c86bccf93 /]# ls


Puede iniciar sesión en el contenedor Docker con el usuario raíz (ID = 0) en lugar del usuario predeterminado proporcionado cuando usa la opción -u . P.ej

docker exec -u 0 -it mycontainer bash

root (id = 0) es el usuario predeterminado dentro de un contenedor. El desarrollador de imágenes puede crear usuarios adicionales. Esos usuarios son accesibles por nombre. Al pasar una identificación numérica, el usuario no tiene que existir en el contenedor.

de la documentación de Docker


Puede usar el comando root del USUARIO en su Dockerfile.


Puedo hacerlo funcionar con el siguiente comando.

root@gitnew:# docker exec -it --user $(username) $(containername) /bin/bash


Sugeriría una mejor solución es dar el --add-host NAME:IP para que Docker se ejecute al iniciar el contenedor. Eso actualizará el /etc/hosts/ sin necesidad de convertirse en root.

De lo contrario, puede anular la configuración de -u USER indicador -u USER en la docker run . Sin embargo, aconsejaría contra esto, ya que realmente no debería estar cambiando las cosas en un contenedor en ejecución. En cambio, realice sus cambios en un Dockerfile y cree una nueva imagen.


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:

docker exec -u 0 -it containername bash

Luego use nsenter para ingresar al contenedor como root

docker exec -u 0 -it containerName bash


pruebe el siguiente comando para obtener el acceso raíz

$ sudo -i


Hay un par de maneras de hacerlo.

  1. Para ejecutar el Docker anulando la configuración de USUARIO

    docker inspect --format {{.State.Pid}} <container_name_or_ID>

o

nsenter --target <PID> --mount --uts --ipc --net --pid

  1. Haga los permisos de archivo necesarios, etc., durante la creación de la imagen en el archivo Docker

  2. Si todos los paquetes están disponibles en su imagen de Linux, chpasswd en el dockerfile antes de la utilidad USER.


docker exec -it <MyContainer> bash root@MyContainer:/# passwd Enter new UNIX password: Retype new UNIX password: