Un Dockerfile es un archivo de texto plano que contiene las instrucciones necesarias para automatizar la creación de una imagen que será utilizada posteriormente para la ejecución de instancias específicas.
Un dockerfile tiene una estructura muy simple para la creación de imágenes:
FROM: Permite definir una imagen base para crear una nueva imagen con dockerfile.
Ejemplo: Ubuntu:18.04
MAINTEINER: Hace referencia a la persona encargada (Deprecado)
Ejemplo: MAINTEINER Daybirth Zapata qvuniversity@qvision.com.co
RUN: Permite ejecutar comandos en la imagen base antes de ser creada
Ejemplo: apt-get update && apt-get install apache2
EXPOSE: Permite exponer un puerto por defecto para el contenedor.
Ejemplo: EXPOSE 8080
ADD / COPY: Permite agregar o copiar archivos desde el host a la imagen
Ejemplo: ADD index.html /var/www/html
CMD: Permite definir la acción por defecto a realizar al crear el contenedor
Ejemplo: CMD “usr/sbin/apache2ctl”, “-D FOREGROUND”
ENTRYPOINT: Permite configurar un contenedor que se correrá como un ejecutable.
Ejemplo: ["/usr/sbin/apache2ctl", "-DFOREGROUND"]
VOLUME: Se usa para indicarle a docker el directorio del host, en el cual se almacenará la data generada por el contenedor. El segundo parámetro se usa para indicar la ruta interna del contenedor donde se almacenan los datos.
Ejemplo: [Ruta del directorio del host]:[Ruta dentro del contenedor] à "C:\Users\UserQV\Documents\Documentos Docker\mysql":/var/lib/mysql
WORKDIR: La instrucción WORKDIR establece el directorio de trabajo para cualquier instrucción RUN, CMD, ENTRYPOINT, COPY y ADD que la siga en el Dockerfile. Si el WORKDIR no existe, se creará incluso si no se usa en ninguna instrucción posterior de Dockerfile. La instrucción WORKDIR se puede usar varias veces en un Dockerfile.ARG: Define una variable que los usuarios pueden pasar en el momento de la compilación al constructor con el comando de compilación de la ventana acoplable utilizando el indicador --build-arg <varname> = <value>.
ENV: Las variables de entorno (declaradas con la declaración ENV) también se pueden usar en ciertas instrucciones como variables para ser interpretadas por el Dockerfile. Las variables de entorno se anotan en el Dockerfile con $ variable_name o $ {variable_name}
Para ver el detalle de todas las opciones para la creación de Dockerfiles: https://docs.docker.com/engine/reference/builder/
Creación de imágenes por medio de Dockerfiles