Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
info:libros:docker-sec-dev-ops:cap2 [29/01/2019 06:29] – [ENTRYPOINT] mateinfo:libros:docker-sec-dev-ops:cap2 [31/01/2019 00:44] (actual) – [ARG] mate
Línia 138: Línia 138:
 copia ficheros, directorios o ficheros remotos al directorio de destino en la imagen docker copia ficheros, directorios o ficheros remotos al directorio de destino en la imagen docker
    * ''ADD <src>... <dest>''    * ''ADD <src>... <dest>''
-   * ''ADD ["<src>",... "<dest>"] : obligatorio en el caso de que algún elemento contenga espacios+   * ''ADD ["<src>",... "<dest>"]'' : obligatorio en el caso de que algún elemento contenga espacios
    * origen puede ser absoluto o relativo al contexto    * origen puede ser absoluto o relativo al contexto
      * si es un directorio, copiará el contenido      * si es un directorio, copiará el contenido
Línia 144: Línia 144:
      * si acaba en **%%/%%** copia el fichero origen con el mismo nombre      * si acaba en **%%/%%** copia el fichero origen con el mismo nombre
    * origen permite caracteres comodín usando las reglas de filepath.Match del lenguaje Go: **%%*%%**, **%%?%%**    * origen permite caracteres comodín usando las reglas de filepath.Match del lenguaje Go: **%%*%%**, **%%?%%**
-   * si origen está en un formato de compresión reconocido (gzip,bzip,xz) se descomprime automaticamente en destino+   * si origen está en un formato de compresión reconocido (gzip,bzip,xz) se descomprime automáticamente en destino
      * si origen es una URL a un archivo comprimido, no se descomprime, solo se copia.      * si origen es una URL a un archivo comprimido, no se descomprime, solo se copia.
    * si se especifican múltiples orígenes o comodines, destino ha de ser directorio (y acabar en /)    * si se especifican múltiples orígenes o comodines, destino ha de ser directorio (y acabar en /)
Línia 153: Línia 153:
  
 == COPY == COPY
 +copiar ficheros y directorios
 +  * ''COPY <src>... <dest>''
 +  * ''COPY ["<src>"... "<dest>"]''
 +  * NO descomprime archivos
 +  * NO copia ficheros remotos
 +  * Permite copiar ficheros entre imágenes ([[info:libros:docker-sec-dev-ops:cap2#multistage|multistage]])
 +    * ''COPY --from=...''
  
 +== VOLUME
 +crea un punto de montaje con el nombre dado
 +  * ''VOLUME <path> [<path>...]''
 +  * ''VOLUME ["<path>" [, "<path>"]]''
 +  * Los volúmenes se montan en tiempo de ejecución del contenedor
 +  * en ese momento se le puede indicar a Docker donde montarlo:
 +    * con el parámetro ''-v'' o ''--volume'' o ''--mount'' especificando un directorio local
 +    * sin parámetro, ubica el volumen en **/var/lib/docker/volumes/<nombre_volumen>/_data**
 +      * para averiguar el nombre del volumen asociado:<code bash>docker container inspect 76ce590930b0 --format "{{ .Mounts }}"</code>
 +      * en mac, el punto de montaje no está en la máquina Apple, si no en el sistema de ficheros de la máquina virtual que Docker usa por debajo
 +
 +== USER
 +establece el usuario (UID) y grupo (GID) del usuario que ejecuta los comandos de las instrucciones **RUN**, **CMD**, **ENTRYPOINT**
 +  * ''USER <user>''
 +  * ''USER <UID>''
 +  * ''USER <UID>[:<GID>]''
 +  * por defecto se ejecutan como **root**
 +  * se puede usar más de una vez en el mismo **Dockerfile**, aunque se recomienda minimizar su uso por su repercusión en las capas de la imagen
 +  * también se puede usar **sudo**, aunque se desaconseja su uso (por temas relacionados con el envío de señales y la emulación de termianles) -> recomendado **gosu**
 +  * también se puede especificar el usuario en el momento de ejecución del contenedor con el parámetro ''-u'' o ''--user''
 +
 +== WORKDIR
 +establece el directorio de trabajo para los comandos **RUN**, **CMD**, **ENTRYPOINT**, **COPY**, **ADD**
 +  * ''WORKDIR <path>'' <- sin %%/%% final
 +  * el directorio es creado inmediatemente
 +  * pueden ser absolutos (recomendado) o relativos (al último **WORKDIR**)
 +
 +== ARG
 +variables que el usuario puede usar durante el **build** de la imagen
 +  * ''BUILD var=valor''
 +  * también se pueden pasar como parámetro en **docker build** con ''--build-arg var=valor''
 +  * solo sobreviven //en la fase// en las que son definidas
 +  * ENV tiene preferencia sobre ARG
 +  * existe un conjunto de variables definidas:
 +    * HTTP_PROXY, http_proxy
 +    * HTTPS_PROXY, https_proxy
 +    * FTP_PROXY, ftp_proxy
 +    * NO_PROXY, no_proxy
 +    * que tienen las siguientes características:
 +      * se pueden pasar por parámetro al construir la imagen **--build-arg**
 +      * no se incluyen como parte del histórico de capas de la imagen, a menos que se defina explícitamente en **Dockerfile**
 +
 +== ONBUILD
 +trigger que se ejecuta cuando la imagen es usada como base para otra imagen
 +  * ''ONBUILD <instrucción>''
 +  * no se pueden anidar 2 ONBUILD
 +  * se pueden poner varios ONBUILD y serán ejecutados en el mismo orden
 +  * se aplica en el primer nivel "de herencia"
 +  * reutilización de una imagen "base"
 +
 +== STOPSIGNAL
 +define la señal que se enviará al contenedor cuando este se pare
 +
 +== HEALTHCHECK
 +comunicar el estado de un contenedor en tiempo de ejecución
 +  * ''HEALTHCHECK NONE'' : deshabilita **healthcheck** heredados
 +  * ''HEALTHCHECK [OPCIONES] CMD comando''
 +    * opciones:
 +      * ''--interval=ns'' : segundos con los que se ejecuta el comando de chequeo. 30s por defecto
 +      * ''--timeout=ns'' : tiempo de espera para la ejecución del chequeo. 30s por defecto.
 +      * ''--start-period=ns'' : tiempo que necesita el contenedor para arrancar. Los chequeos en este período no se consideran erróneos
 +      * ''--retries=N'' : número de reintentos antes de considerar el contenedor como fallido
 +    * comando:
 +      * comando de terminal o array JSON (como en CMD/ENTRYPOINT)
 +      * el código de salida indica el estado del contenedor:
 +        * 0 - success
 +        * 1 - unhealthy
 +        * 2 - reserved (no usar)
 +      * la salida del comando - en fase de depuración - se puede consultar a través de ''docker container inspect'' (4096 bytes)
 +  * solo puede haber 1 HEALTCHECK en el fichero **Dockerfile**, así que el último prevalece (permitiendo sobreescribir alguno heradado)
 +
 +== SHELL
 +indica que shell será usada por defecto
 +  * ''SHELL ["ejecutable","parámetros"]''
 +  * por defecto:
 +    * LINUX: ''SHELL ["/bin/sh","-c"]''
 +    * WINDOWS: ''SHELL ["cmd","/S","/C"]''
 +  * se puede usar varias veces en el **Dockerfile** y las instrucciones que precisen de un shell usarán el establecido en ese momento
 +  * afecta a **CMD**, **ENTRYPOINT**, **RUN**
  • info/libros/docker-sec-dev-ops/cap2.1548772184.txt.gz
  • Darrera modificació: 29/01/2019 06:29
  • per mate