permisos_y_propietarios_en_volumenes_con_docker-compose
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
permisos_y_propietarios_en_volumenes_con_docker-compose [2021/05/22 01:34] – created busindre | permisos_y_propietarios_en_volumenes_con_docker-compose [2021/05/23 01:50] (current) – busindre | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Cómo manejar los permisos y propietarios de volumenes | + | ====== Cómo manejar los permisos y propietarios de volumenes |
- | Docker-compose no permite configurar el montaje | + | Manual rápido y completo de Dockerfile: |
+ | Manual rápido y completo de Docker | ||
+ | Manual rápido y completo | ||
- | **Montar | + | En el ecosistema docker se usan volúmenes |
- | Este es posiblemente | + | Cuando no se usan contenedores que utilizan root para ejecutar |
- | En el ejemplo se crea una imagen docker llamada alpine_volumen que usará un usuario no privilegiado “testuser”. | + | Ejemplo de montaje de volúmenes y bind mounts (directorios del host anfitrión) desde la linea de comandos usando la sintaxis " |
+ | <code bash># Se monta el volumen con el mismo UID y GID del usuario que ejecutó el comando. | ||
+ | docker run --mount source=volumen1, | ||
+ | |||
+ | # Los bind mounts no permiten configurar el UID/GID y se montará en el contenedor con el UID/GID del anfitrión, exista o no en el contenedor. | ||
+ | docker run -it --mount type=bind, | ||
+ | # Siempre se puede arranca el contenedor indicando el usuario compatible con el directorio del host (bind mount) a montar. | ||
+ | docker run --user antonio -it --mount type=bind, | ||
+ | |||
+ | Cuando se trata de volúmenes, desde la linea de comandos es simple especificar un usuario y grupo como ya vimos ([[guia_rapida_de_la_linea_de_comandos_de_docker|Leer guía rápida de docker.]]), pero también sería posible hacerlo desde el Dockerfile como veremos a continuación, | ||
+ | |||
+ | **Montar volúmenes (no bind mounts) a partir de un fichero Dockerfile** | ||
+ | |||
+ | Al margen de la linea de comandos, este es posiblemente el mejor método de configurar un punto de montaje dentro del contenedor con los permisos deseados cuando se usan aplicaciones estilo docker-compose. El proceso se basa en crear una imagen mediante un fichero Dockerfile donde se define el usuario y los permisos del directorio que monta el volumen. Una vez se monte el volumen, ya sea desde la linea de comandos o docker-compose, | ||
+ | |||
+ | En el ejemplo se crea una imagen docker llamada | ||
<code bash> | <code bash> | ||
ARG USR=testuser | ARG USR=testuser | ||
Line 15: | Line 32: | ||
VOLUME / | VOLUME / | ||
USER $USR # Usuario del proceso.</ | USER $USR # Usuario del proceso.</ | ||
- | |||
- | Linea de comando (se creará el volumen XXXX si no existe). | ||
- | < | ||
Montar el volumen desde docker-compose, | Montar el volumen desde docker-compose, | ||
Line 31: | Line 45: | ||
volumes: | volumes: | ||
XXXX:</ | XXXX:</ | ||
+ | |||
+ | También se puede montar el volumen desde la linea de comando (se creará el volumen XXXX si no existe). | ||
+ | < | ||
+ | |||
| | ||
- | **Montar directorios conociendo el usuario del contenedor y aplicándolo al directorio host** | + | **Montar directorios |
- | Obtener el id del usuario que corre en el contenedor | + | Obtener el id del usuario que corre en el contenedor. |
<code bash> | <code bash> | ||
# docker | # docker | ||
Line 48: | Line 66: | ||
Una vez se conoce el usuario y grupo, se puede usar en el host el comando chown y chmod. Por supuesto el usuario debe existir en el host. | Una vez se conoce el usuario y grupo, se puede usar en el host el comando chown y chmod. Por supuesto el usuario debe existir en el host. | ||
- | **Montar directorios conociendo el usuario del directorio del host y aplicándolo al contenedor** | + | **Montar directorios |
Se crea un fichero .env con el usuario y grupo del directorio se sabe se va a montar en el contenedor. | Se crea un fichero .env con el usuario y grupo del directorio se sabe se va a montar en el contenedor. | ||
Line 54: | Line 72: | ||
GID=101</ | GID=101</ | ||
- | En el fichero de docker-compose se define el usuario y grupo que debe correr el proceso | + | En el fichero de docker-compose se define el usuario y grupo que debe correr el proceso |
<code bash> | <code bash> | ||
version: " | version: " | ||
Line 69: | Line 87: | ||
**Aplicar la configuración de propietario y permisos en el ENTRYPOINT** | **Aplicar la configuración de propietario y permisos en el ENTRYPOINT** | ||
- | Se aplica la configuración dentro del ENTRYPOINT. Normalmente se usará un script, pero para el ejemplom | + | Se aplica la configuración dentro del ENTRYPOINT. Normalmente se usará un script, pero para el ejemplo |
<code bash> | <code bash> | ||
- | web: | + | version: " |
- | image: alpine | + | services: |
- | stdin_open: true # docker run -i | + | |
- | tty: true # docker run -t | + | |
- | container_name: | + | stdin_open: true # docker run -i |
- | volumes: | + | tty: true # docker run -t |
- | - / | + | container_name: |
- | entrypoint: /bin/sh -c " | + | volumes: |
+ | - / | ||
+ | entrypoint: /bin/sh -c " |
permisos_y_propietarios_en_volumenes_con_docker-compose.1621640041.txt.gz · Last modified: 2021/05/22 01:34 by busindre