run remove hub compose docker file-ownership volumes

remove - Docker crea archivos como raíz en el volumen montado



docker store (2)

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 el UID:GID del usuario www-data en su contenedor).