Dockerfile​



Las instrucciones más comunes son:

  • FROM: Indica la imagen base que se utilizará para construir la nueva imagen.

  • RUN: Ejecuta comandos en la imagen.

  • COPY: Copia archivos o directorios desde el host a la imagen.

  • WORKDIR: Establece el directorio de trabajo por defecto para el resto de instrucciones.

  • CMD: Define el comando que se ejecutará cuando se inicie un contenedor a partir de la imagen.


ENTRYPOINT: Define el comando que se ejecutará cuando se inicie un contenedor a partir de la imagen, pero no se puede sobreescribir.

 Un Dockerfile es un script que contiene instrucciones para construir una imagen de Docker. Crea un archivo llamado Dockerfile en el mismo directorio:

touch Dockerfile

Paso 1: Construir la imagen de Docker

Edita el archivo Dockerfile y añade el siguiente contenido:

# Usar la imagen oficial de Nginx como base FROM nginx:alpine # Copiar el archivo HTML al directorio de Nginx COPY index.html /usr/share/nginx/html/index.html # Exponer el puerto 80 EXPOSE 80 # Comando para iniciar Nginx CMD ["nginx", "-g", "daemon off;"]

Paso 2: Construir la imagen de Docker Ahora, construye la imagen de Docker usando el Dockerfile: docker build -t mi-contenedor-web .

Paso 3: Ejecutar el contenedor

Una vez que la imagen esté construida, puedes ejecutar un contenedor basado en esa imagen: docker run -d -p 8080:80 --name mi-servidor-web mi-contenedor-web -d: Ejecuta el contenedor en segundo plano (modo "detached"). -p 8080:80: Mapea el puerto 80 del contenedor al puerto 8080 de tu máquina. --name mi-servidor-web: Asigna un nombre al contenedor.

¿De dónde sale mi-contenedor-web?

Cuando ejecutas el comando docker build -t mi-contenedor-web ., estás construyendo una imagen y asignándole el nombre mi-contenedor-web. Este nombre lo eliges tú, y no tiene que ser el mismo que el nombre de la carpeta.


Por ejemplo:

  • Si tu carpeta se llama mi-contenedor-web, no significa que la imagen deba llamarse igual. Podrías haber usado docker build -t mi-imagen-nginx . y luego referenciarla en el docker-compose.yml como image: mi-imagen-nginx.




¿Cómo sabe Docker qué Dockerfile usar?

Cuando ejecutas el comando docker build, Docker busca un archivo llamado Dockerfile en el directorio que especificas. Por defecto, si no indicas un archivo específico, Docker asume que el archivo se llama Dockerfile y está en el directorio actual.

Especificar un Dockerfile diferente

Supongamos que tienes dos archivos:

  • Dockerfile.dev para desarrollo.

  • Dockerfile.prod para producción


Puedes construir una imagen usando Dockerfile.dev de la siguiente manera:

docker build -t mi-contenedor-web-dev -f Dockerfile.dev .


  • Dockerfile.dev: Para desarrollo (por ejemplo, con herramientas de depuración).

  • Dockerfile.prod: Para producción (optimizado y ligero).




3. Listar contenedores en ejecución


docker ps


docker ps -a


4. Detener un contenedor


docker stop mi-nginx


5. Iniciar un contenedor detenido


docker start mi-nginx


6. Eliminar un contenedor


docker rm mi-nginx


8. Acceder al contenedor


docker exec -it mi-nginx bash


docker exec -it mi-nginx bash


Si la imagen no tiene bash, usa sh:


docker exec -it mi-nginx sh

Explicación sobre cómo ingresar a un contenedor y para qué se hace

Ingresar a un contenedor es una tarea común cuando trabajas con Docker. Te permite ejecutar comandos directamente dentro del contenedor, lo que es útil para:

  1. Depurar problemas: Verificar logs, configuraciones o estados del servicio.

  2. Realizar tareas administrativas: Crear bases de datos, modificar archivos, instalar dependencias, etc.

  3. Explorar el entorno: Verificar cómo está configurado el contenedor.

https://www.youtube.com/watch?v=AwZrEQaaYcA

https://www.youtube.com/watch?v=-XnfBItOBHE&t=42s

https://www.youtube.com/watch?v=xH_fkzXpGus

https://www.youtube.com/watch?v=-563XKoRfZ8&t=4s


Comentarios

Entradas más populares de este blog

14. Publish and Detached modes

12. Hola Mundo en Docker.

11¿Qué es Docker? y ¿Por qué debo saberlo?