Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Següent revisió | Revisió prèvia | ||
| info:cursos:altran:docker:dockerfile [05/07/2018 08:27] – creat mate | info:cursos:altran:docker:dockerfile [03/01/2019 02:44] (actual) – [COPY] mate | ||
|---|---|---|---|
| Línia 7: | Línia 7: | ||
| '' | '' | ||
| - | <callout type=" | + | <callout type=" |
| + | También se puede lanzar un proceso vagrant rsync-auto que se encarga de ir haciendo este proceso automaticamente</ | ||
| + | |||
| + | == instrucciones | ||
| + | * FROM : imagen-plantilla | ||
| + | * ENV : variables de entorno (modificar PATH) | ||
| + | * ARG : variables de Dockerfile (no en el contenedor) | ||
| + | * COPY : copiar ficheros en la imagen | ||
| + | * ADD | ||
| + | * RUN : ejecutar comandos | ||
| + | * VOLUMEN | ||
| + | * EXPOSE | ||
| + | * ENTRYPOINT | ||
| + | * CMD | ||
| + | * USER | ||
| + | * WORKDIR = cd | ||
| + | |||
| + | === FROM | ||
| + | imagen de referencia | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | === RUN | ||
| + | ejecuta comandos en el contenedor (linux) | ||
| + | |||
| + | === CMD | ||
| + | '' | ||
| + | |||
| + | <callout type=" | ||
| + | <sxh bash> | ||
| + | FROM debian | ||
| + | RUN apt-get update | ||
| + | RUN apt-get install -y nginx | ||
| + | CMD [" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | === OPTIMIZAR | ||
| + | lo que se tenga que borrar, se tiene que hacer en la misma layer (RUN) | ||
| + | <sxh bash> | ||
| + | FROM debian | ||
| + | RUN apt-get update \ | ||
| + | && apt-get install -y nginx \ | ||
| + | && rm -rf / | ||
| + | CMD [" | ||
| + | </ | ||
| + | |||
| + | === COPY | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | <callout type=" | ||
| + | https:// | ||
| + | |||
| + | === LAB2 | ||
| + | <sxh bash> | ||
| + | FROM debian: | ||
| + | RUN apt update && apt install -y nginx | ||
| + | CMD [" | ||
| + | COPY index.html / | ||
| + | </ | ||
| + | importante que el COPY esté por debajo del RUN (LAYERS!!!) | ||
| + | |||
| + | === volumes | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | los volúmenes se usan para persistencia, | ||
| + | |||
| + | === label | ||
| + | * '' | ||
| + | |||
| + | === arg | ||
| + | * '' | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | === env | ||
| + | * '' | ||
| + | |||
| + | === add | ||
| + | * '' | ||
| + | * es un copy on steroids | ||
| + | * también descomprime un tgz o similar directamente | ||
| + | * CREA UNA LAYER (como RUN y COPY) | ||
| + | |||
| + | === expose | ||
| + | * '' | ||
| + | |||
| + | === workdir | ||
| + | * '' | ||
| + | |||
| + | === imágenes alpine | ||
| + | * **nginx: | ||
| + | * las versiones **alpine** están basadas en la imagen **alpine**, muy ligera | ||
| + | * usan **sh** y no **bash** | ||
| + | * también se usa **slim** para hacer entender que es una versión ligera | ||
| + | |||
| + | === user | ||
| + | * '' | ||
| + | * '' | ||
| + | * en **openshift** siempre ha de estar el usuario añadido al grupo de **root** | ||
| + | * <code bash> | ||
| + | #!/bin/bash fix-permissions.sh | ||
| + | for arg in " | ||
| + | do | ||
| + | find " | ||
| + | find " | ||
| + | find " | ||
| + | done | ||
| + | </ | ||
| + | si extendemos de una imagen que ha cambiado el USER y nosotros hemos de realizar cambios, hemos de hacer el cambio a USER root, hacemos lo que necesitemos y lo volvemos a dejar con el usuario que toque. | ||
| + | |||
| + | === context | ||
| + | * '' | ||
| + | * para evitar el problema del **Dockerfile**, | ||
| + | * para hacerlo más límpio, usar el **.** siempre y todo referenciado desde ahí | ||
| + | |||
| + | === bbdd | ||
| + | bien para desarrollo, no para producción | ||
| + | |||
| + | es un cuello de botella, ya que para mantener la persistencia hay que montar un volumen por NFS (red), lo que hace que sea lento | ||
| + | |||
| + | los DBA ullen de las máquinas virtuales, quieren servidores físicos, así que de docker... | ||
| + | |||
| + | === volumes | ||
| + | * '' | ||
| + | * funcionamiento parecido a EXPOSE y -P | ||
| + | * si no especificamos nosotros con '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * <code bash | ||
| + | FROM ... | ||
| + | RUN mkdir /app | ||
| + | RUN echo " | ||
| + | VOLUME /app | ||
| + | RUN echo " | ||
| + | </ | ||
| + | |||
| + | === entrypoint | ||
| + | * es lo primero que se ejecuta (antes que '' | ||
| + | * '' | ||
| + | * a este comando le llega por parámetro lo que viene desde '' | ||
| + | * '' | ||
| + | * ejecución en tiempo de ejecución | ||
| + | * ejecuta todo lo que recibe a través del CMD: < | ||
| + | #! /bin/bash | ||
| + | exec " | ||
| + | </ | ||
| + | |||
| + | los entrypoint y los cmd hay que hacerlo a la manera JSON [" | ||
| + | {{ : | ||
| + | |||
| + | == proxy-pass | ||
| + | configuración de apache para que al recibir una petición delegue en otros contenedores | ||
| + | |||
| + | imagen creada de docker donde se le pasa por variable de entorno el destino al que ha delegar, ayudado por el '' | ||
| + | |||
| + | == .dockerignore | ||
| + | permite expresiones regulares, como **.gitignore** y metes todos aquellos ficheros que no han de formar parte de la imagen | ||