1.
Definición
Un Dockerfile es un documento de texto plano que contiene una secuencia ordenada de instrucciones. Docker utiliza este archivo para construir una Imagen de contenedor.
Para comprender la relación entre los componentes de Docker, podemos utilizar la analogía de los moldes y las galletas que hemos usado en clase:
El Dockerfile (El Diseño): Es el plano o las especificaciones técnicas que dictan cómo debe fabricarse el molde. Define las dimensiones, la forma y los materiales necesarios.
La Imagen (El Molde/Cortador): Es la herramienta inmutable creada a partir del diseño (Dockerfile). Una vez fabricado el molde, este no cambia y sirve para producir múltiples
copias idénticas.
El Contenedor (La Galleta): Es el producto final en ejecución. Al igual que con un solo molde se pueden cortar cientos de galletas idénticas, a partir de una sola Imagen de
Docker se pueden instanciar múltiples contenedores simultáneos.
2. Instrucciones Fundamentales (Sintaxis)
El Dockerfile utiliza palabras clave específicas para definir el estado de la imagen. A continuación, se detallan las cinco más relevantes.
FROM : Define la imagen base sobre la cual se construirá la nueva imagen. Es análogo a seleccionar el material base para nuestro molde (por ejemplo, acero inoxidable o
plástico). Es obligatoriamente la primera instrucción.
WORKDIR : Establece el directorio de trabajo dentro del sistema de archivos del contenedor. Es el espacio designado donde se realizarán las operaciones subsiguientes.
COPY : Transfiere archivos desde el sistema anfitrión (su ordenador) al sistema de archivos de la imagen. Equivale a incorporar elementos específicos al diseño.
RUN : Ejecuta comandos en la terminal durante el proceso de construcción de la imagen (por ejemplo, instalación de librerías o dependencias). Esto "fija" las características
dentro del molde antes de que esté terminado.
CMD : Especifica el comando por defecto que se ejecutará cuando se inicie un contenedor a partir de la imagen. Define el propósito final de la ejecución.
Esto para entenderlo lo tenemos que probar:
3. Ejercicio Práctico: Creación y Despliegue
Procederemos a crear un contenedor básico utilizando el lenguaje Python para ilustrar el proceso.
Fase 1: Preparación del Entorno
Genere un directorio nuevo en su sistema y cree dentro los siguientes dos archivos:
1. [Link] : Contendrá la lógica de la aplicación.
Python
print("Iniciando ejecución del sistema en contenedor Docker.")
2. Dockerfile : El archivo de configuración (sin extensión).
Fase 2: Configuración del Dockerfile
Inserte el siguiente contenido en su archivo Dockerfile . Note la estructura lógica de las instrucciones:
Dockerfile
# 1. Definición de la imagen base (Python 3.9 versión reducida)
FROM python:3.9-slim
# 2. Establecimiento del directorio operativo interno
WORKDIR /usr/src/app
# 3. Transferencia del código fuente al entorno del contenedor
COPY [Link] .
# 4. Instrucción de ejecución al iniciar el contenedor
CMD ["python", "[Link]"]
Fase 3: Construcción de la Imagen (Build)
Abra su terminal o línea de comandos, ubíquese en el directorio del proyecto y ejecute la siguiente instrucción para "fabricar el molde":
Bash
docker build -t imagen-desplieguedaw-python .
El parámetro -t etiqueta la imagen para su fácil identificación.
La imagen se crea dentro del sistema. Una comprobación rápida para saber donde está es ejecutar:
docker images
Por ejemplo en mi caso la salida muestra la imagen creada en el primer lugar de la vista.
argos@ferutasumakuLap:~/TEMPORAL/DesplieguePruebaDocker> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/imagen-desplieguedaw-python latest 18e93db5a280 4 minutes ago 126 MB
[Link]/cachyos/cachyos-v3 latest 7d60b077028b 3 days ago 2.35 GB
[Link]/library/archlinux latest d7ead43a9bf6 7 days ago 540 MB
[Link]/library/python 3.9-slim 085da638e1b8 2 months ago 126 MB
argos@ferutasumakuLap:~/TEMPORAL/DesplieguePruebaDocker>
Fisicamente la imagen está (o debería estar ) en
`/var/lib/docker/
o en
/var/lib/containers/
Generalmente en alguna carpeta que llame "overlay" y en algunas versiones overlay-images.
Fase 4: Ejecución del Contenedor (Run)
Una vez finalizada la construcción, proceda a instanciar el contenedor (crear la "galleta") a partir de la imagen:
Bash
docker run imagen-desplieguedaw-python
Resultado de la operación:
argos@ferutasumakuLap:~/TEMPORAL/DesplieguePruebaDocker> docker run imagen-desplieguedaw-python
Iniciando ejecución del sistema en contenedor Docker.
El sistema deberá mostrar en la consola: Iniciando ejecución del sistema en contenedor Docker.