User Tools

Site Tools


guia_rapida_de_dockerfile

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
guia_rapida_de_dockerfile [2021/05/21 23:39] – [Directivas de un fichero Dockerfile] busindreguia_rapida_de_dockerfile [2021/05/22 17:16] (current) – [Directivas de un fichero Dockerfile] busindre
Line 134: Line 134:
 COPY "alpine-minirootfs-3.13.0-x86_64.tar.gz" /opt/volumen2/</code> COPY "alpine-minirootfs-3.13.0-x86_64.tar.gz" /opt/volumen2/</code>
  
-Si se quiere controlar el montaje de volumenes con un determinado usuario que no sea root, este puede ser primeramenre definido en el fichero Dockerfile. Una vez se monte el volumen, herederá los permisos y propietario definidos previamente en la imagen.+Si se quiere controlar el montaje de volúmenes con un determinado usuario que no sea root, este puede ser primeramente definido en el fichero Dockerfile. Una vez se monte el volumen, heredará los permisos y propietario definidos previamente en la imagen. En el ejemplo se crea una imagen docker llamada alpine_volumen que usará un usuario no privilegiado "testuser".
  
-<code bash>FROM alpine +<code bash>ARG USR=testuser 
-RUN addgroup -S testuser && adduser -S testuser -G testuser       # Se crea el usuario y el grupo para luzego aplicarlo al punto de montaje del volumen. +FROM alpine 
-RUN mkdir /DIR_testuser && chown testuser:testuser /DIR_testuser  # Se crea el directorio donde será montado el volumen y su propietario +RUN addgroup -S $USR && adduser -S $USR -G $USR           # Se crea el usuario y el grupo para luego aplicarlo al punto de montaje del volumen. 
-VOLUME /DIR_testuser                                              # Se hace una referencia al volumen que será montado desde linea de comando o compose. +RUN mkdir /DIR_testuser && chown $USR:$USR /DIR_testuser  # Se crea el directorio donde será montado el volumen y su propietario 
-USER testuser                                                     # Usuario del proceso.</code>+VOLUME /DIR_testuser                                      # Se hace una referencia al volumen que será montado desde linea de comando o docker-compose. 
 +USER $USR                                                 # Usuario del proceso.</code>
  
 Linea de comando (se creará el volumen XXXX si no existe). Linea de comando (se creará el volumen XXXX si no existe).
-<code bash>docker run --rm -it -v XXXX:/DIR_testuser imagen</code>+<code bash>docker run --rm -it -v XXXX:/DIR_testuser alpine_volumen</code>
  
 Montar el volumen desde docker-compose, el volumen se crea automáticamente si no existe. El contenedor creado solo ejecutará una shell. Montar el volumen desde docker-compose, el volumen se crea automáticamente si no existe. El contenedor creado solo ejecutará una shell.
Line 149: Line 150:
 services: services:
   web:   web:
-    image: alpine_volumen+    image: alpine_volumen  # Imagen creada a partir del Dockerfile mostrado anteriormente.
     stdin_open: true # docker run -i     stdin_open: true # docker run -i
     tty: true        # docker run -t     tty: true        # docker run -t
     command: /bin/sh     command: /bin/sh
     volumes:     volumes:
-      - XXXX:/ordner_testuser+      - XXXX:/DIR_testuser  # El volumen será montado como el usuario testuser.
 volumes: volumes:
     XXXX:</code>     XXXX:</code>
-NOTA: El traspaso automático de usuario y permisos del directorio montado sucede unicamente cuando el volumen no ha sido usado previamente por otro contenedor.+NOTA: El traspaso automático de la configuración de usuario y permisos al montar el volumen sucede únicamente, cuando el volumen no ha sido usado previamente por otro contenedor. Esto es solo aplicable a volúmenes, NO a directorios (bind mounts) del host. Para cpntrolar los permisos de "bind mounts" con aplicaciones como docker-compose, habría que usar en ENTRYPOINT comandos chmod / chown para adaptar los permisos a las necesidades o bien adaptarlos en el anfitrión manualmente ([[permisos_y_propietarios_en_volumenes_con_docker-compose|leer]]).
  
 **WORKDIR** configura el directorio de trabajo, sencillamente es la carpeta donde ejecutaran RUN, CMD, ENTRYPOINT, COPY y ADD sus instrucciones. Si no existe el directorio es creado automáticamente. Puede usarse varias veces y puede ampliarse múltiples veces si la primera inicialización usa una ruta directa y las siguientes relativas. También puede interactuar con  ENV.  Los WORKDIR no crean nuevas capas a la hora de crear imágenes. **WORKDIR** configura el directorio de trabajo, sencillamente es la carpeta donde ejecutaran RUN, CMD, ENTRYPOINT, COPY y ADD sus instrucciones. Si no existe el directorio es creado automáticamente. Puede usarse varias veces y puede ampliarse múltiples veces si la primera inicialización usa una ruta directa y las siguientes relativas. También puede interactuar con  ENV.  Los WORKDIR no crean nuevas capas a la hora de crear imágenes.
guia_rapida_de_dockerfile.1621633182.txt.gz · Last modified: 2021/05/21 23:39 by busindre