tutorial - ejemplos de docker
¿Cómo usar sudo dentro de un contenedor de docker? (4)
Normalmente, los contenedores acoplables se ejecutan utilizando la raíz del usuario. Me gustaría utilizar un usuario diferente, que no es ningún problema al usar la directiva USER de docker. Pero este usuario debería poder usar sudo dentro del contenedor. Este comando falta.
Aquí hay un archivo Docker simple para este propósito:
FROM ubuntu:12.04
RUN useradd docker && echo "docker:docker" | chpasswd
RUN mkdir -p /home/docker && chown -R docker:docker /home/docker
USER docker
CMD /bin/bash
Al ejecutar este contenedor, me conecto con el usuario ''docker''. Cuando trato de usar sudo, el comando no se encuentra. Así que traté de instalar el paquete sudo dentro de mi archivo Docker usando
RUN apt-get install sudo
Esto da como resultado No se puede ubicar el paquete sudo
Acabo de recibirlo. Como señaló regan, tuve que agregar al usuario al grupo sudoers. Pero la razón principal fue que olvidé actualizar la memoria caché de los repositorios, por lo que apt-get no pudo encontrar el paquete sudo. Está funcionando ahora. Aquí está el código completo:
FROM ubuntu:12.04
RUN apt-get update && /
apt-get -y install sudo
RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo
USER docker
CMD /bin/bash
Cuando ni sudo ni apt-get están disponibles en el contenedor, también puede saltar al contenedor en ejecución como usuario raíz usando el comando
docker exec -u root -t -i container_id /bin/bash
Las otras respuestas no funcionaron para mí. Seguí buscando y encontré una publicación de blog que cubría cómo un equipo ejecutaba un sistema no root dentro de un contenedor acoplable.
Aquí está la versión TL; DR:
RUN apt-get update
RUN apt-get install sudo
RUN adduser --disabled-password --gecos '''' docker
RUN adduser docker sudo
RUN echo ''%sudo ALL=(ALL) NOPASSWD:ALL'' >> /etc/sudoers
USER docker
# this is where I was running into problems with the other approaches
RUN sudo apt-get update
Estaba usando FROM node:9.3
para esto, pero sospecho que otras bases de contenedores similares funcionarían también.
si quieres conectarte al contenedor e instalar algo
usando apt-get
primero como respuesta anterior de nuestro hermano "Tomáš Záluský"
docker exec -u root -t -i container_id /bin/bash
entonces intenta
EJECUTAR apt-get update o apt-get ''lo que quieras''
funcionó conmigo espero que sea útil para todos