-. Docker puede crear imágenes automáticamente leyendo las instrucciones de un archivo (Dockerfile) Dockerfile es un documento de texto que contiene todos los comandos que un usuario puede llamar en la línea de comandos para ensamblar una imagen. Los docker build usuarios pueden crear una compilación automatizada que ejecute varias instrucciones de línea de comandos en sucesión.
-. El comando docker build crea una imagen a partir de Dockerfile un contexto y un (.) El contexto de la compilación es el conjunto de archivos en una ubicación específica PATH o URL. El PATH es un directorio en el sistema de archivos local. El URL es una ubicación de repositorio Git.
-. El contexto de construcción se procesa de forma recursiva. Entonces, a PATH incluye cualquier subdirectorio e URL incluye el repositorio y sus submódulos. Este ejemplo muestra un comando de compilación que usa el directorio actual (.) como contexto de compilación: # docker build .
-. La compilación la ejecuta el demonio de Docker, no la CLI. Lo primero que hace un proceso de construcción es enviar el contexto completo (recursivamente) al demonio. En la mayoría de los casos, es mejor comenzar con un directorio vacío como contexto y mantener su Dockerfile en ese directorio. Agregue solo los archivos necesarios para compilar el Dockerfile.
Nota: No use su directorio raíz /, como el PATH para su contexto de compilación, ya que hace que la compilación transfiera todo el contenido de su disco duro al demonio de Docker.
-. Para usar un archivo en el contexto de construcción, Dockerfile serefiere al archivo especificado en una instrucción, por ejemplo, una COPY instrucción. Para aumentar el rendimiento de la compilación, excluya archivos y directorios agregando un .dockerignore archivo al directorio de contexto.
-. Tradicionalmente, Dockerfile se ubica en la raíz del contexto. Utiliza la -f bandera con docker build para apuntar a un Dockerfile en cualquier lugar de su sistema de archivos.
Formato
Aquí está el formato del Dockerfile:
INSTRUCTION arguments
- -. La instrucción no distingue entre mayúsculas y minúsculas. Sin embargo, la convención es que estén MAYÚSCULAS para distinguirlos de los argumentos más fácilmente.
- -. Docker ejecuta las instrucciones Dockerfile en orden.
- -. Dockerfile debe comenzar con una FROM instrucción . Esto puede ser después de las directivas del analizador , los comentarios y los ARG de ámbito global .
- -. FROM instrucción especifica la imagen principal a partir de la cual está construyendo. FROM solo puede estar precedido por una o más ARG instrucciones, que declaran argumentos que se usan en FROM líneas en el Dockerfile.
https://docs.docker.com/engine/reference/builder/#parser-directives
https://docs.docker.com/engine/reference/builder/#arg
https://docs.docker.com/glossary/#parent_image
Construir la imagen mediante el comando docker build
La sintaxis para el comando es: docker build [opciones] RUTA | URL | –
Las opciones más comunes son:
- -t, nombre [:etiqueta]. Crea una imagen con el nombre y la etiqueta especificada a partir de las instrucciones indicadas en el fichero. Es una opción muy recomendable.
- –no-cache. Por defecto, Docker guarda en memoria caché las acciones realizadas recientemente. Si se diese el caso de que ejecutamos un docker build varias veces, Docker comprobará si el fichero contiene las mismas instrucciones y, en caso afirmativo, no generará una nueva imagen. Para generar una nueva imagen omitiendo la memoria caché utilizaremos siempre esta opción.
- –pull. También por defecto. Docker solo descargará la imagen especificada en la expresión FROM si no existe. Para forzar que descargue la nueva versión de la imagen utilizaremos esta opción.
- –quiet. Por defecto, se muestra todo el proceso de creación, los comandos ejecutados y su salida. Utilizando esta opción solo mostrará el identificador de la imagen creada.
Introducción al comando Dockerfile
- -. Un Dockerfile es un script que contiene todos los comandos para crear una imagen de Docker.
- -. El Dockerfile contiene todas las instrucciones que se utilizarán para crear la imagen de Docker con el comando ‘docker build‘.
- -. A continuación, algunas instrucciones de Dockerfile, no es que sean muchas estas son las mas usadas.
FROM
-. Establezca la imagen base para la nueva imagen que desea crear. La instrucción FROM (de) inicializará la nueva etapa de compilación y debe ubicarse en la parte superior del Dockerfile.
LABEL
-. Con esta instrucción, puede agregar información adicional sobre su imagen de Docker, como la versión, descripción, mantenedor, etc. La instrucción LABEL (etiqueta) es un par clave-valor que le permite agregar múltiples etiquetas y valores de múltiples líneas.
RUN
-. Esta instrucción se usa para ejecutar el comando durante el proceso de construcción de la imagen de la ventana acoplable. Puede instalar los paquetes adicionales necesarios para sus imágenes de Docker. RUN (correr) .
ADD
-. La instrucción ADD (agregar) se usa para copiar archivos, directorios o archivos remotos desde la URL a sus imágenes de Docker, desde ‘src’ a la ruta absoluta ‘dest’. Además, puede configurar la propiedad predeterminada de su archivo.
ENV
-. La instrucción ENV se usa para definir una variable de entorno que se puede usar durante la etapa de compilación y también se puede reemplazar en línea en muchas.
CMD
-. La instrucción CMD se utiliza para definir el comando predeterminado que se ejecutará al ejecutar el contenedor. Y el Dockerfile solo debe contener una instrucción CMD, y si hay múltiples CMD, se ejecutará la última instrucción CMD.
EXPOSE
-. Esta instrucción se usa para (exponer) el puerto del contenedor en los puertos de red específicos en tiempo de ejecución. El protocolo predeterminado expuesto es TCP, pero puede especificar si es TCP o UDP.
ARG
-. La instrucción ARG se usa para definir una variable que el usuario puede pasar en el tiempo de construcción. Puede usar esta instrucción en el ‘comando de compilación’ de la ventana acoplable durante el tiempo de compilación usando la opción ‘ –build-arg variable = value‘ y puede pasar a través del Dockerfile. Además, puede usar varios ARG en Dockerfile.
ENTRYPOINT
-. La instrucción ENTRYPOINT (punto de entrada) se usa para definir el primer comando predeterminado que se ejecutará cuando el contenedor se esté ejecutando. Defina el comando para iniciar su aplicación con la instrucción ENTRYPOINT.
WORKDIR
-. La instrucción WORKDIR se usa para definir el directorio de trabajo predeterminado de su imagen de Docker. Las instrucciones RUN, CMD, ENTRYPOINT y ADD siguen la instrucción WORKDIR. Puede agregar varias instrucciones WORKDIR en su Dockerfile, y si no existe, se creará automáticamente.
USER
-. La instrucción USER se utiliza para definir el usuario predeterminado o gid al ejecutar la imagen. RUN, CMD y ENTRYPOINT siguen las instrucciones del USUARIO en el Dockerfile.
VOLUME
-. La instrucción VOLUME se utiliza para habilitar el acceso / directorio vinculado entre el contenedor y la máquina host.
Recopilando:
Un resumen de Dockerfile que es como se utiliza sus instrucciones con una breve comentario de cada instrucción, la fuente de esto apuntes https://docs.docker.com/engine/reference/builder/