Usuario:ManuelRomero/Docker/dockerFile

De WikiEducator
Saltar a: navegación, buscar


DokerFile

  • Es un fichero de texto que va contener una serie de instrucciones a partir de las cuales vamos a crear una imagen.
  • El fichero tiene un formato concreto, con una serie de instrucciones que veremos a continuación. Al menos es necesario utilizar la instrucción FROM para especificar la imagen base a partir de la cual queremos construir nuestra imagen personalizada, que es el objetivo de la especificación de este fichero

(Comment.gif: La idea es que partiendo de una imagen, personalicemos la imagen que queremos crear, después, a partir de esta imagen, levantaremos el contenedor)


  • Una vez que tengamos el contenido del fichero construiremos la imagen a través del comando docker build [opciones] PATH|URK|-
El nombre del fichero
  • El nombre del fichero puede ser cualquiera, pero se recomienda que sea DockerFile, En caso de que se establezca otro nombre, habrá que especificarlo cuando se invoque a la instrucción build
docker build -f nombre_fichero .

Instrucciones

   FROM: Establece la imagen base a partir de la cual se va a construir la imagen personalizada.
   RUN: Ejecuta un comando en la imagen durante la construcción.
   CMD: Especifica el comando predeterminado que se ejecutará cuando se inicie un contenedor a partir de la imagen.
   LABEL: Añade metadatos a la imagen.
   EXPOSE: Especifica un puerto o puertos que deben abrirse en el contenedor cuando se ejecuta.
   ENV: Establece una variable de entorno en la imagen.
   ADD: Copia archivos desde el host a la imagen.
   COPY: Copia archivos desde el contexto de construcción a la imagen.
   ENTRYPOINT: Especifica el programa que se ejecutará cuando se inicie un contenedor a partir de la imagen.
   VOLUME: Crea un punto de montaje en el contenedor.
   USER: Especifica el usuario o el grupo de usuarios que se utilizarán para ejecutar los comandos en el contenedor.
   WORKDIR: Establece el directorio de trabajo predeterminado para los comandos RUN, CMD, ENTRYPOINT, COPY y ADD.
   ARG: Declara un argumento que puede pasarse a la imagen durante la construcción con el parámetro --build-arg.
FROM
  • Establece la imagen a partir de la cual partimos. Si por ejemplo, nuestro contenedor va a ejectuar un servidor web, deberíamos de partir de una imagen ngynx o http. conviene buscar la imagen de la que partamos en docker hub
FROM ubuntu:latest
  • Si creamos la imagen a partir de este fichero de especificación, crearemos una imagen a partir de ubuntu:latest. Para ejecutar las instrucciones del fichero docker file usamos el comando build como se ha comentado anteriormente

Comando build.png

  • Una vez que establecemos la imagen a partir de la cual queremos partir, con las instrucciones siguiente vamos a personalizar nuestra imagen.



RUN
  • Esta es una instrucción muy importante y muy utilizada. Con ella vamos a poder ejectutar acciones o instrucciones en la imagen durante su construcción
  • Es importante tener en cuenta que durante la construcción de la imagen, no se puede interactuar mediante el teclado, por lo que si la acción requiere que facilitemos algún valor o seleccionemos alguna opción, hay que preverlo y establecerlo previamente.
  • Podremos ejecutar cualquier comando, siendo habituales:
  1. instalar paquetes:
RUN apt-get update && apt-get  install -y  \
git
zip
php
  1. Ejecutar script, previamente creados
RUN bash nombre_scrip.sh
  1. Ejecutar comandos de administración
RUN mkdir -p /var/www/app && chown -R www-data:www-data /var/www/app
  1. Ejecutar comandos de instalación de paquetes específicos (p.e. de php con composer)
RUN composer install --no-scripts --no-autoloader
CMD
LABEL
EXPOSE
ENV
ADD
COPY
ENTRYPOINT
VOLUME
USER
WORKDIR
ARG