Está en la página 1de 5

DOCKERFILE

¿Qué es Dockerfile?
Es documento de texto que contiene todos los comandos necesarios para crear una imagen.
Dentro del archivo Dockerfile vamos a poner todos los comandos que necesitamos para crear una
imagen, después solo hay que ejecutar ese Dockerfile para crear la imagen.

Ejemplo de archivo Dockerfile.

La primera línea pertenece al FROM nos va a decir desde donde va a crear la imagen.
El comando RUN, es lo que va a ejecutar.
Dockerfile lo que no deja utilizar es nada interactivo por eso en la última línea se utiliza el -y para
que cuando la ejecute y pida la confirmación automáticamente diga que yes. Tiene que estar
implícito en el documento Dockerfile, no soporta nada interactivo.

Para crear la imagen, es necesario salir a la terminal y ejecutar #docker build -t nombreimagen
path/del/Dockerfile

Si queremos saber toda la historia de una imagen tenemos el comanda history. Ejecutamos
#docker history nombreimagen y saldrá todos los comandos, tamaños, tiempo de creación de la
imagen etc.

Directivas que se pueden ejecutar en Dockerfile


RUN
Uno de los comandos más utilizados en Dockerfile.

Este comando crear un archivo “version” en el directorio /etc/ y le agrega una linea con el
contenido “1.0”, y además continua instalándose git y la utilidad iputils-ping.
Ahora para crear esta nueva imagen se ejecuta #docker build -t nombreimagen:v2 path/Dockerfile
En este caso se le ha añadido el tag v2 para definir la versión, sino ponemos tag deja el latest como
nombre.

CMD
El comando CMD es una directiva que permite indicar por defecto del contenedor. Lo que hace es
indicar un valor o un comando por defecto, lo hace ejecutando una shell. Lo que hace es
ejecutar /bin/sh llamando al bash.
Ejecutamos el Dockerfile #docker build -t nombreimagen:v3 path/Dockerfile

Ejecuta todos los comandos del Dockerfile definidos y en el último lugar ejecuta el CMD con el
mensaje. Si ejecutamos el contenedor nos dará el mensaje de bienvenida.

Otro ejemplo de CMD es usando los corchetes, esto permite ejecutar el mensaje anterior dentro
del contenedor en forma exec. Esto sirve porque a veces tenemos servidores que no tienen shell,
servidores en background.

Ejecutamos el Dockerfile.

Ahí vemos que se ejecuta todo igual como anteriormente, y ejecuta el CMD en el quinto paso. A
simple vista parece que sea igual, pero hay algunas diferencias. Si hacemos un #docker history
nombreimagen vemos la historia de la imagen y vemos como no llama a la shell simplemente
ejecuta el mensaje de bienvenida.
Editamos el Dockerfile

Y ahora desde el CMD vamos a llamar directamente a un bash.


Creamos la imagen de nuevo.

Hacemos un history a la imagen y vemos que CMD lo que ha hecho ha sido llamar un bash desde
una shell.

Ahora hacemos un ejemplo con los corchetes.


Volvemos a crear la imagen y el contenedor. Y vemos como si ha llamado al bash con el comando
CMD pero lo ha hecho ejecutando exec y no desde la shell como en el ejemplo anterior.

ENTRYPOINT
Este comando básicamente hace lo mismo que CMD pero con alguna diferencia. El comando
ENTRYPOINT ejecuta un comando cuando arrancamos el contenedor Docker.
El comando CMD permite ejecutar un parámetro cuando vamos a crear un contenedor.
El comando ENTRYPOINT ejecuta el comando dentro de la directiva del Dockerfile y no permite
pasar ningún parámetro.
Montando la imagen con CMD y con el parámetro df -h.

Montando la imagen con ENTRYPOINT pasándole el parámetro df -h.

Editamos el Dockerfile

Volvemos a ejecutar el contenedor sin pasar el parámetro y ejecuta correctamente.


WORKDIR
Permite definir un directorio base que se va utilizar para trabajar.

Con el primer RUN creamos el directorio /data.


Con WORKDIR definimos que el directorio /data sea el directorio principal del lugar de trabajo.
Con el siguiente RUN creamos un archivo de texto.

Desde la terminal creamos la imagen desde el Dockerfile. #docker build -t imagen:v1


path/Dockerfile y seguido levantamos el contenedor #docker run -it --rm fimagen:v1

Como se puede observar en la imagen anterior al ejecutar el contenedor nos deja en al ruta de la
carpeta /data y al hacer el ls se puede ver como ha creado el archivo anterior “archivo.txt”.

También podría gustarte