Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| 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 03:46] – [variables de entorno] mate | info:libros:docker-sec-dev-ops:cap2 [31/01/2019 00:44] (actual) – [ARG] mate | ||
|---|---|---|---|
| Línia 19: | Línia 19: | ||
| * variables de entorno | * variables de entorno | ||
| * '' | * '' | ||
| - | * '' | + | * '' |
| + | * '' | ||
| * se referencian con el signo **$** o **${}** | * se referencian con el signo **$** o **${}** | ||
| * funcionalidades tipo bash: | * funcionalidades tipo bash: | ||
| Línia 36: | Línia 37: | ||
| * VOLUME | * VOLUME | ||
| * WORKDIR | * WORKDIR | ||
| + | * son de tipo global (afecta a todas las imágenes que desciendan donde fueron definidas) | ||
| + | * también llegan al contenedor | ||
| + | * se pueden sobrescribir con el parámetro **--env** en **docker run** | ||
| == .dockerignore | == .dockerignore | ||
| Línia 99: | Línia 103: | ||
| * ENTRYPOINT comando param1 param2 <- comando ejecutado a través de la shell | * ENTRYPOINT comando param1 param2 <- comando ejecutado a través de la shell | ||
| * es posible sobrescribir el ENTRYPOINT de una imagen a través del parámetro **%%--%%entrypoint** en **docker run** | * es posible sobrescribir el ENTRYPOINT de una imagen a través del parámetro **%%--%%entrypoint** en **docker run** | ||
| - | * '' | + | * '' |
| * -al y /root son parámetros pasados al nuevo **entrypoint** | * -al y /root son parámetros pasados al nuevo **entrypoint** | ||
| * importante que la última instrucción ejecutada por el ENTRYPOINT se convierta en en el proceso con PID 1 del contenedor (a través de la instrucción **exec**) para que reciba las señales Unix enviadas al contenedor.< | * importante que la última instrucción ejecutada por el ENTRYPOINT se convierta en en el proceso con PID 1 del contenedor (a través de la instrucción **exec**) para que reciba las señales Unix enviadas al contenedor.< | ||
| Línia 112: | Línia 116: | ||
| fi | fi | ||
| exec " | exec " | ||
| + | |||
| + | * como regla general, debemos tener en cuenta: | ||
| + | * cada Dockerfile debe tener definido un CMD o ENTRYPOINT | ||
| + | * cuando queremos usar un contenedor como un fichero ejecutable, debemos usar ENTRYPOINT | ||
| + | * CMD se debería usar para definir los parámetros por defecto para ENTRYPOINT o para ejecutar un comando de apoyo para la creación del contenedor, pero no el comando que ejecuta el proceso final del mismo | ||
| + | |||
| + | == LABEL | ||
| + | añade metadatos a una imagen | ||
| + | * '' | ||
| + | * se pueden crear varias etiquetas o una única separando valores | ||
| + | * etiquetas con el mismo nombre, prevalece la última | ||
| + | |||
| + | == EXPOSE | ||
| + | indica puertos y protocolos donde escuchará el contenedor | ||
| + | * con **docker run** podemos mapear los puertos con: | ||
| + | * '' | ||
| + | * '' | ||
| + | * los contenedores que comparten red, no necesitan mapear puertos, tienen acceso a todos ellos. | ||
| + | |||
| + | == ADD | ||
| + | copia ficheros, directorios o ficheros remotos al directorio de destino en la imagen docker | ||
| + | * '' | ||
| + | * '' | ||
| + | * origen puede ser absoluto o relativo al contexto | ||
| + | * si es un directorio, copiará el contenido | ||
| + | * destino puede ser absoluto o relativo al WORKDIR | ||
| + | * 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: **%%*%%**, **%%?%%** | ||
| + | * si origen está en un formato de compresión reconocido (gzip, | ||
| + | * si origen es una URL a un archivo comprimido, no se descomprime, | ||
| + | * si se especifican múltiples orígenes o comodines, destino ha de ser directorio (y acabar en /) | ||
| + | * si destino no existe, se creará, con los directorios intermedios necesarios | ||
| + | * todos los ficheros y directorios serán creados con UID/GID 0 | ||
| + | * en caso de URLs a ficheros remotos, los permisos se establecen a 600 | ||
| + | * ADD no tiene sistema de autentificación implementado, | ||
| + | |||
| + | == COPY | ||
| + | copiar ficheros y directorios | ||
| + | * '' | ||
| + | * '' | ||
| + | * NO descomprime archivos | ||
| + | * NO copia ficheros remotos | ||
| + | * Permite copiar ficheros entre imágenes ([[info: | ||
| + | * '' | ||
| + | |||
| + | == VOLUME | ||
| + | crea un punto de montaje con el nombre dado | ||
| + | * '' | ||
| + | * '' | ||
| + | * 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 '' | ||
| + | * sin parámetro, ubica el volumen en **/ | ||
| + | * para averiguar el nombre del volumen asociado:< | ||
| + | * 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** | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * por defecto se ejecutan como **root** | ||
| + | * se puede usar más de una vez en el mismo **Dockerfile**, | ||
| + | * 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 '' | ||
| + | |||
| + | == WORKDIR | ||
| + | establece el directorio de trabajo para los comandos **RUN**, **CMD**, **ENTRYPOINT**, | ||
| + | * '' | ||
| + | * 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 | ||
| + | * '' | ||
| + | * también se pueden pasar como parámetro en **docker build** con '' | ||
| + | * 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, | ||
| + | * 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 | ||
| + | * '' | ||
| + | * 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 " | ||
| + | |||
| + | == 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 | ||
| + | * '' | ||
| + | * '' | ||
| + | * opciones: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * comando: | ||
| + | * comando de terminal o array JSON (como en CMD/ | ||
| + | * 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 '' | ||
| + | * solo puede haber 1 HEALTCHECK en el fichero **Dockerfile**, | ||
| + | |||
| + | == SHELL | ||
| + | indica que shell será usada por defecto | ||
| + | * '' | ||
| + | * por defecto: | ||
| + | * LINUX: '' | ||
| + | * WINDOWS: '' | ||
| + | * 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**, | ||