En esta secci贸n aprenderemos los conceptos b谩sicos de Docker y c贸mo usarlo para crear y gestionar contenedores para proyectos de desarrollo.
En esta secci贸n, introduciremos el concepto de Docker y su importancia en el desarrollo de aplicaciones modernas.
En esta secci贸n, aprenderemos c贸mo instalar Docker.
En esta secci贸n, exploraremos los conceptos fundamentales de Docker.
En esta secci贸n, aprenderemos los comandos b谩sicos de Docker para interactuar con contenedores e im谩genes.
El comando docker run se utiliza para crear y ejecutar contenedores a partir de im谩genes de Docker. Puedes especificar opciones y argumentos adicionales para personalizar el comportamiento del contenedor durante su ejecuci贸n.
docker run nombre_de_la_imagen [opciones]
Por ejemplo, para crear y ejecutar un contenedor basado en la imagen de Ubuntu, puedes ejecutar: docker run ubuntu
.
El comando docker ps se utiliza para mostrar una lista de contenedores en ejecuci贸n en el sistema. Proporciona informaci贸n b谩sica sobre cada contenedor, como su ID, nombre, estado, puertos expuestos, etc.
docker ps [opciones]
Por ejemplo, para mostrar todos los contenedores en ejecuci贸n junto con informaci贸n detallada, puedes ejecutar:
docker ps -a
El comando docker images se utiliza para mostrar una lista de im谩genes disponibles en el sistema. Proporciona informaci贸n sobre cada imagen, como su repositorio, etiqueta, ID y tama帽o.
docker images [opciones]
Por ejemplo, para mostrar todas las im谩genes disponibles en el sistema, puedes ejecutar:
docker images
Otros comandos b谩sicos de Docker incluyen:
El comando docker pull se utiliza para descargar una imagen de Docker desde un registro de im谩genes, como Docker Hub, a tu sistema local.
docker pull nombre_de_la_imagen
Por ejemplo, para descargar la imagen oficial de Ubuntu, puedes ejecutar:
docker pull ubuntu
El comando docker stop se utiliza para detener uno o m谩s contenedores en ejecuci贸n.
docker stop ID_del_contenedor
Por ejemplo, para detener un contenedor con ID abcdef123456, puedes ejecutar:
docker stop abcdef123456
El comando docker rm se utiliza para eliminar uno o m谩s contenedores detenidos.
docker rm ID_del_contenedor
Por ejemplo, para eliminar un contenedor con ID abcdef123456, puedes ejecutar:
docker rm abcdef123456
.
El comando docker rmi se utiliza para eliminar una o m谩s im谩genes de Docker del sistema local.
docker rmi nombre_de_la_imagen
Por ejemplo, para eliminar la imagen de Ubuntu, puedes ejecutar:
docker rmi ubuntu
.
En esta secci贸n, aprenderemos a crear y gestionar contenedores Docker.
Para crear un contenedor en Docker, puedes utilizar el comando docker run, seguido del nombre de la imagen que deseas utilizar.
docker run nombre_de_la_imagen
Por ejemplo, para crear un contenedor basado en la imagen de Ubuntu, puedes ejecutar:
docker run ubuntu
.
Una vez que has creado un contenedor en Docker, puedes gestionar su ciclo de vida utilizando los comandos docker start, docker stop y docker restart.
docker start ID_del_contenedor
docker stop ID_del_contenedor
docker restart ID_del_contenedor
Por ejemplo, para iniciar un contenedor con ID abcdef123456, puedes ejecutar:
docker start abcdef123456
.
Para conectarte a un contenedor en ejecuci贸n y ejecutar comandos dentro de 茅l, puedes utilizar el comando docker exec.
docker exec -it ID_del_contenedor /bin/bash
Por ejemplo, para conectarte a un contenedor con ID abcdef123456, puedes ejecutar:
docker exec -it abcdef123456 /bin/bash
.
Para exponer puertos desde un contenedor Docker al sistema host, puedes utilizar la opci贸n -p o --publish al ejecutar el comando docker run.
docker run -p puerto_host:puerto_contenedor nombre_de_la_imagen
Por ejemplo, para exponer el puerto 80 del contenedor al puerto 8080 del sistema host, puedes ejecutar:
docker run -p 8080:80 nginx
.
Para asignar vol煤menes a un contenedor Docker y persistir datos entre ejecuciones, puedes utilizar la opci贸n -v o --volume al ejecutar el comando docker run.
docker run -v ruta_host:ruta_contenedor nombre_de_la_imagen
Por ejemplo, para asignar el directorio /var/www del sistema host al directorio /usr/share/nginx/html del contenedor, puedes ejecutar:
docker run -v /var/www:/usr/share/nginx/html nginx
En esta secci贸n, aprenderemos a crear im谩genes personalizadas utilizando Dockerfile.
Dockerfile es un archivo de texto que contiene instrucciones que Docker utilizar谩 para construir una imagen. La sintaxis b谩sica de un Dockerfile incluye una serie de comandos que describen las acciones necesarias para configurar el entorno y ejecutar la aplicaci贸n dentro del contenedor.
Por ejemplo, un Dockerfile simple podr铆a comenzar con una instrucci贸n FROM para especificar la imagen base, seguida de otras instrucciones como RUN, COPY, EXPOSE y CMD para configurar y ejecutar la aplicaci贸n.
En un Dockerfile, puedes agregar dependencias necesarias para tu aplicaci贸n utilizando la instrucci贸n RUN. Por ejemplo, si tu aplicaci贸n requiere ciertas bibliotecas o herramientas, puedes instalarlas dentro del contenedor utilizando comandos como apt-get, yum, pip, etc.
Por ejemplo, para instalar las dependencias de Python en un contenedor basado en Ubuntu, puedes usar:
RUN apt-get update && apt-get install -y python3
Puedes configurar el entorno de trabajo dentro del contenedor utilizando la instrucci贸n WORKDIR. Esta instrucci贸n establece el directorio de trabajo para las instrucciones siguientes en el Dockerfile.
Por ejemplo, para establecer el directorio de trabajo en /app, puedes usar:
WORKDIR /app
Puedes ejecutar comandos durante la construcci贸n de la imagen utilizando la instrucci贸n RUN. Estos comandos se ejecutar谩n cuando se construya la imagen, permiti茅ndote realizar configuraciones adicionales, instalar software, copiar archivos, etc.
Por ejemplo, para copiar archivos desde el sistema host al contenedor durante la construcci贸n de la imagen, puedes usar:
COPY archivos /directorio_destino
En esta secci贸n, exploraremos c贸mo configurar redes en Docker para conectar contenedores entre s铆.
Docker admite varios tipos de redes que permiten a los contenedores comunicarse entre s铆 y con el mundo exterior. Algunos de los tipos de redes comunes en Docker incluyen la red de puente (bridge network), la red de host (host network), la red de superposici贸n (overlay network), y la red de contenedor (container network).
Cada tipo de red tiene sus propias caracter铆sticas y se utiliza en diferentes situaciones, dependiendo de los requisitos de conectividad de los contenedores.
Adem谩s de los tipos de redes predeterminados proporcionados por Docker, tambi茅n puedes crear tus propias redes personalizadas utilizando el comando docker network create.
docker network create nombre_de_la_red
Esto te permite configurar y gestionar redes espec铆ficas para tus aplicaciones y contenedores, y proporciona mayor control sobre la conectividad de la red en tu entorno Docker.
Una vez que has creado una red en Docker, puedes conectar contenedores a esa red utilizando la opci贸n --network al ejecutar el comando docker run.
docker run --network nombre_de_la_red nombre_de_la_imagen
Esto permite que los contenedores se comuniquen entre s铆 a trav茅s de la red especificada, lo que facilita la implementaci贸n de arquitecturas de microservicios y la gesti贸n de aplicaciones distribuidas.
Docker tambi茅n proporciona la capacidad de comunicarse entre contenedores que se encuentran en redes diferentes utilizando la red de superposici贸n (overlay network) y otras t茅cnicas de enrutamiento.
Esto permite construir aplicaciones distribuidas y escalables que pueden funcionar en entornos de m煤ltiples hosts sin comprometer la conectividad de red.
En esta secci贸n, aprenderemos a utilizar vol煤menes en Docker para persistir datos entre ejecuciones de contenedores.
Los vol煤menes en Docker se utilizan para persistir datos entre ejecuciones de contenedores. Puedes crear vol煤menes utilizando el comando docker volume create.
docker volume create nombre_del_volumen
Esto crear谩 un volumen en Docker que puede ser utilizado por uno o m谩s contenedores para almacenar y compartir datos de forma persistente.
Una vez que has creado un volumen en Docker, puedes asignarlo a uno o m谩s contenedores utilizando la opci贸n -v o --volume al ejecutar el comando docker run.
docker run -v nombre_del_volumen:ruta_en_el_contenedor nombre_de_la_imagen
Esto permite que los contenedores accedan al volumen y persistan datos en 茅l durante su ejecuci贸n.
Puedes copiar datos entre vol煤menes y el sistema host utilizando comandos de Docker, como docker cp.
docker cp archivo_o_directorio ruta_del_contenedor
Esto te permite transferir archivos y directorios entre el sistema host y los vol煤menes de Docker de manera r谩pida y sencilla.
Docker admite tanto vol煤menes an贸nimos como vol煤menes nombrados. Los vol煤menes an贸nimos son gestionados por Docker de forma autom谩tica y no tienen un nombre asignado. Por otro lado, los vol煤menes nombrados son creados expl铆citamente por el usuario y tienen un nombre asociado.
Ambos tipos de vol煤menes pueden ser 煤tiles en diferentes situaciones, dependiendo de los requisitos espec铆ficos de tu aplicaci贸n y de c贸mo prefieras gestionar los datos persistentes en Docker.
Veremos algunos ejemplos pr谩cticos para entender mejor los conceptos de Docker:
En este ejemplo, crearemos un contenedor Docker simple basado en una imagen existente, como Ubuntu, y ejecutaremos un comando dentro de 茅l.
docker run ubuntu echo "Hola mundo desde Docker"
Este comando crear谩 un contenedor basado en la imagen de Ubuntu y ejecutar谩 el comando echo "Hola mundo desde Docker" dentro del contenedor. Luego, el contenedor se detendr谩 autom谩ticamente.
En este ejemplo, montaremos un volumen en un contenedor Docker para persistir datos entre ejecuciones del contenedor.
docker run -v /ruta/local:/ruta/contenedor ubuntu
Este comando crea un contenedor basado en la imagen de Ubuntu y monta el directorio /ruta/local del sistema host en el directorio /ruta/contenedor del contenedor.
De esta manera, cualquier dato almacenado en ese directorio dentro contenedor estar谩 disponible en el sistema host y persistir谩incluso despu茅s de detener el contenedor.
En este ejemplo, crearemos una red en Docker y conectaremos dos contenedores para que puedan comunicarse entre s铆.
docker network create mynetwork
docker run --network mynetwork --name container1 ubuntu
docker run --network mynetwork --name container2 ubuntu
Estos comandos crear谩n una red llamada mynetwork en Docker. Luego, dos contenedores basados en la imagen de Ubuntu se conectar谩n a esta red utilizando la opci贸n --network.
Ahora, los contenedores container1 y container2 pueden comunicarse entre s铆 a trav茅s de la red mynetwork.
En esta secci贸n, practicaremos lo aprendido con ejercicios para reforzar los conocimientos sobre Docker:
En este ejercicio, crearemos un Dockerfile para una aplicaci贸n Python simple.
El Dockerfile podr铆a tener el siguiente contenido:
FROM python:3.9-slim
WORKDIR /app
COPY . .
CMD ["python", "app.py"]
Este Dockerfile utiliza una imagen base de Python, establece el directorio de trabajo en /app, copia todos los archivos del directorio actual al directorio /app del contenedor y finalmente ejecuta el comando python app.py para ejecutar la aplicaci贸n Python.
En este ejercicio, ejecutaremos y probaremos la aplicaci贸n Python simple en un contenedor Docker.
Para construir la imagen y ejecutar el contenedor, puedes utilizar los siguientes comandos:
docker build -t mi_aplicacion_python .
docker run mi_aplicacion_python
Esto construir谩 la imagen utilizando el Dockerfile creado en el ejercicio anterior y ejecutar谩 un contenedor basado en esa imagen. Luego, puedes probar la aplicaci贸n accediendo al contenedor y ejecutando los comandos necesarios.
En este ejercicio, crearemos un contenedor Docker con una base de datos y lo conectaremos a una aplicaci贸n Django.
Podr铆amos utilizar un Dockerfile similar al siguiente para una base de datos PostgreSQL:
FROM postgres:latest
ENV POSTGRES_DB=mydb
ENV POSTGRES_USER=myuser
ENV POSTGRES_PASSWORD=mypassword
EXPOSE 5432
Este Dockerfile utiliza la imagen base de PostgreSQL, establece algunas variables de entorno para configurar la base de datos y expone el puerto 5432 para permitir conexiones externas.
隆Felicidades por completar este m贸dulo sobre Docker!
Ahora que has adquirido conocimientos s贸lidos sobre Docker, est谩s listo para llevar tus habilidades al siguiente nivel y aplicarlas en tus proyectos de desarrollo de Django y React.
Aqu铆 tienes algunos pasos que puedes seguir para continuar tu aprendizaje y aprovechar al m谩ximo Docker en tus proyectos:
Con dedicaci贸n y pr谩ctica continua, te convertir谩s en un experto en el uso de Docker para el desarrollo de software y podr谩s aprovechar al m谩ximo esta poderosa herramienta en tus proyectos futuros. 隆Adelante y sigue construyendo!
Con dedicaci贸n y pr谩ctica continua, te convertir谩s en un experto en el uso de Docker para el desarrollo de software y podr谩s aprovechar al m谩ximo esta poderosa herramienta en tus proyectos futuros.
隆Adelante y sigue construyendo!
Facilitador: Diego Saavedra
Correo: dsaavedra@codingsacademy.com