remove - Docker crea archivos como raíz en el volumen montado
docker store (2)
Esta pregunta ya tiene una respuesta aquí:
Estoy usando Docker (1.3.1) para crear RPM dentro de un contenedor:
docker run -v /home/matt/build:/build build-rpm /build/build-pkg.sh
Esto funciona bien (mi usuario está en el grupo de la docker
, por lo que no necesito sudo) y suelta un archivo .rpm
completado en el directorio actual. El problema es que el archivo se crea como propiedad de la raíz.
¿Cómo puedo organizarlo para que el archivo se cree propiedad del mismo usuario con el que ejecuto la ventana acoplable?
Docker se ejecuta como root y no tiene idea de lo que su usuario está dentro de su entorno virtual (incluso si está en el grupo sudoers). Pero puede crear un usuario no root mientras construye su imagen de ventana acoplable que puede llamarse como desee.
# create a non-root user named tester,
# give them the password "tester" put them in the sudo group
RUN useradd -d /home/tester -m -s /bin/bash tester && echo "tester:tester" | chpasswd && adduser tester sudo
# start working in the "tester" home directory
WORKDIR /home/tester
COPY ./src
# Make the files owned by tester
RUN chown -R tester:tester /home/tester
# Switch to your new user in the docker image
USER tester
Puede intentar crear (en el Dockerfile de una imagen personalizada) un usuario y establecerlo como el que usa el contenedor.
RUN adduser --system --group --shell /bin/sh auser /
&& mkdir /home/auser/bin
USER auser
Luego, verifique si una docker run -v /home/matt/build:/build build-rpm
monta la carpeta compartida en / build como auser
.
Otra opción mencionada en el número 2259 :
Si
chown
el volumen (en el lado del host) antes de montarlo, funcionará.
En ese caso, podrías hacer:
mkdir /tmp/www
chown 101:101 /tmp/www
docker run -v /tmp/www:/var/www ubuntu stat -c "%U %G" /var/www
(Suponiendo que
101:101
es elUID:GID
del usuariowww-data
en su contenedor).