guia_rapida_de_dockerfile
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
guia_rapida_de_dockerfile [2021/03/06 02:15] – busindre | guia_rapida_de_dockerfile [2021/05/22 17:16] (current) – [Directivas de un fichero Dockerfile] busindre | ||
---|---|---|---|
Line 112: | Line 112: | ||
- | **ADD** permite copiar ficheros del host a la imagen y los contenedores dispondrán de esos ficheros, permite configurar propietario y grupo. Si se especifica el nombre de usuario, este debe estar en "/ | + | **ADD** permite copiar ficheros del host a la imagen y los contenedores dispondrán de esos ficheros, permite configurar propietario y grupo. Si se especifica el nombre de usuario, este debe estar en "/ |
La diferencia con COPY es que ADD descomprime automáticamente ficheros comprimidos y permite descargar de internet archivos. Los permisos predeterminados son 600 para los ficheros obtenidos remotamente con ADD. | La diferencia con COPY es que ADD descomprime automáticamente ficheros comprimidos y permite descargar de internet archivos. Los permisos predeterminados son 600 para los ficheros obtenidos remotamente con ADD. | ||
- | <code bash>ADD --chown=XXXX: | + | <code bash>ADD --chown=XXXX: |
# ADD decomprimirá el tar.gz en / | # ADD decomprimirá el tar.gz en / | ||
# La aplicación de permisos en este caso no se aplican a los ficheros descomprimidos.</ | # La aplicación de permisos en este caso no se aplican a los ficheros descomprimidos.</ | ||
- | ADD no es compatible con procesos de autenticación cuando usamos | + | ADD no es compatible con procesos de autenticación cuando usamos |
<code bash>ADD https:// | <code bash>ADD https:// | ||
**COPY** no permite usar ficheros remotos y no descomprime los ficheros de manera automáticamente como si hace ADD. | **COPY** no permite usar ficheros remotos y no descomprime los ficheros de manera automáticamente como si hace ADD. | ||
- | <code bash> | + | <code bash> |
- | # El propietario de /opt/codicoalpine/ | + | # El propietario de /opt/codigoalpine/ |
La ruta origen es relativa siempre al directorio de trabajo donde estemos (PWD). | La ruta origen es relativa siempre al directorio de trabajo donde estemos (PWD). | ||
- | < | + | < |
NOTA: Si en el destino se usa una ruta relativa, será en base al WORKDIR usado por la imagen. Si se copia un directorio del anfitrión (host) los permisos son también copiados (no así el propietario). | NOTA: Si en el destino se usa una ruta relativa, será en base al WORKDIR usado por la imagen. Si se copia un directorio del anfitrión (host) los permisos son también copiados (no así el propietario). | ||
Line 134: | Line 134: | ||
COPY " | COPY " | ||
+ | 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 " | ||
+ | |||
+ | <code bash>ARG USR=testuser | ||
+ | FROM alpine | ||
+ | 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. | ||
+ | RUN mkdir / | ||
+ | VOLUME / | ||
+ | USER $USR # Usuario del proceso.</ | ||
+ | |||
+ | Linea de comando (se creará el volumen XXXX si no existe). | ||
+ | <code bash> | ||
+ | |||
+ | Montar el volumen desde docker-compose, | ||
+ | < | ||
+ | services: | ||
+ | web: | ||
+ | image: alpine_volumen | ||
+ | stdin_open: true # docker run -i | ||
+ | tty: true # docker run -t | ||
+ | command: /bin/sh | ||
+ | volumes: | ||
+ | - XXXX:/ | ||
+ | volumes: | ||
+ | XXXX:</ | ||
+ | NOTA: El traspaso automático de la configuración de usuario y permisos al montar el volumen sucede únicamente, | ||
**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. | ||
Line 232: | Line 257: | ||
Si se puede evitar el uso de root (usuario predeterminado) mejor. | Si se puede evitar el uso de root (usuario predeterminado) mejor. | ||
+ | |||
+ | Utilizar algún sistema de escaneo de vulnerabilidades por ejemplo [[https:// | ||
+ | |||
+ | Nunca debe cambiarse el propietario del socket de docker. Si un usuario no root necesita hacer uso de comandos docker, simplemente se agrega el grupo " | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Evitar la activación del modo privilegiado de docker (por defecto desactivado). De necesitarlo deben usarse imágenes oficiales en la medida de lo posible. El uso de la opción " | ||
+ | |||
+ | Para tareas de autenticación, | ||
**Crear una imagen con nombre personalizado**. | **Crear una imagen con nombre personalizado**. | ||
<code bash> docker build -t alpine_busi .</ | <code bash> docker build -t alpine_busi .</ |
guia_rapida_de_dockerfile.1614993314.txt.gz · Last modified: 2021/03/06 02:15 by busindre