Docker 馃悑

Docker

Objetivo 馃幆

En esta secci贸n aprenderemos los conceptos b谩sicos de Docker y c贸mo usarlo para crear y gestionar contenedores para proyectos de desarrollo.

Desarrollo del Tema 馃摎

  • Introducci贸n a Docker
  • Instalaci贸n de Docker
  • Conceptos b谩sicos de Docker: contenedores, im谩genes, vol煤menes
  • Comandos b谩sicos de Docker
  • Creaci贸n y gesti贸n de contenedores
  • Uso de Dockerfile para la creaci贸n de im谩genes personalizadas
  • Redes en Docker
  • Vol煤menes en Docker

Introducci贸n a Docker 馃悑

Docker

En esta secci贸n, introduciremos el concepto de Docker y su importancia en el desarrollo de aplicaciones modernas.

  • 驴Qu茅 es Docker?
  • Beneficios de usar Docker
  • Comparaci贸n con la virtualizaci贸n tradicional
  • Casos de uso de Docker

Instalaci贸n de Docker

Docker

En esta secci贸n, aprenderemos c贸mo instalar Docker.

  • Instalaci贸n en Windows
  • Verificaci贸n de la instalaci贸n

Conceptos b谩sicos de Docker: contenedores, im谩genes, vol煤menes

Docker

En esta secci贸n, exploraremos los conceptos fundamentales de Docker.

  • Contenedores Docker
  • Im谩genes Docker
  • Vol煤menes en Docker
  • Comparaci贸n entre contenedores e im谩genes

Comandos b谩sicos de Docker 1/2

Docker

En esta secci贸n, aprenderemos los comandos b谩sicos de Docker para interactuar con contenedores e im谩genes.

  • docker run
  • docker ps
  • docker images

docker run 1/2

Docker

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]

docker run 2/2

Docker

Por ejemplo, para crear y ejecutar un contenedor basado en la imagen de Ubuntu, puedes ejecutar: docker run ubuntu.

docker ps 1/2

Docker

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]

docker ps 2/2

Docker

Por ejemplo, para mostrar todos los contenedores en ejecuci贸n junto con informaci贸n detallada, puedes ejecutar:

docker ps -a

docker images 1/2

Docker

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

Comandos b谩sicos de Docker 2/2

Docker

Otros comandos b谩sicos de Docker incluyen:

  • docker pull
  • docker stop
  • docker rm
  • docker rmi

docker pull

Docker

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

docker stop

Docker

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

docker rm

Docker

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.

docker rmi

Docker

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.

Creaci贸n y gesti贸n de contenedores

Docker

En esta secci贸n, aprenderemos a crear y gestionar contenedores Docker.

  • Creaci贸n de un contenedor
  • Gesti贸n de ciclos de vida del contenedor (start, stop, restart)
  • Conexi贸n a un contenedor en ejecuci贸n
  • Exposici贸n de puertos
  • Asignaci贸n de vol煤menes

Creaci贸n de un contenedor

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.

Gesti贸n de ciclos de vida del contenedor (start, stop, restart) 1/2

Docker

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

Gesti贸n de ciclos de vida del contenedor (start, stop, restart) 2/2

Docker

Por ejemplo, para iniciar un contenedor con ID abcdef123456, puedes ejecutar:

docker start abcdef123456.

Conexi贸n a un contenedor en ejecuci贸n

Docker

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.

Exposici贸n de puertos

Docker

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.

Asignaci贸n de vol煤menes 1/2

Docker

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

Asignaci贸n de vol煤menes 2/2

Docker

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

Uso de Dockerfile para la creaci贸n de im谩genes personalizadas

Docker

En esta secci贸n, aprenderemos a crear im谩genes personalizadas utilizando Dockerfile.

  • Sintaxis b谩sica de Dockerfile
  • Agregar dependencias
  • Configuraci贸n del entorno de trabajo
  • Ejecuci贸n de comandos durante la construcci贸n de la imagen

Sintaxis b谩sica de Dockerfile 1/2

Docker

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.

Sintaxis b谩sica de Dockerfile 2/2

Docker

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.

Agregar dependencias 1/2

Docker

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.

Agregar dependencias 2/2

Docker

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

Configuraci贸n del entorno de trabajo

Docker

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

Ejecuci贸n de comandos durante la construcci贸n de la imagen 1/2

Docker

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.

Ejecuci贸n de comandos durante la construcci贸n de la imagen 2/2

Docker

Por ejemplo, para copiar archivos desde el sistema host al contenedor durante la construcci贸n de la imagen, puedes usar:

COPY archivos /directorio_destino

Redes en Docker

Docker

En esta secci贸n, exploraremos c贸mo configurar redes en Docker para conectar contenedores entre s铆.

  • Tipos de redes en Docker
  • Creaci贸n de redes personalizadas
  • Conexi贸n de contenedores en una red
  • Comunicaci贸n entre contenedores en redes diferentes

Tipos de redes en Docker 1/2

Docker

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).

Tipos de redes en Docker 2/2

Docker

Cada tipo de red tiene sus propias caracter铆sticas y se utiliza en diferentes situaciones, dependiendo de los requisitos de conectividad de los contenedores.

Creaci贸n de redes personalizadas 1/2

Docker

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

Creaci贸n de redes personalizadas 2/2

Docker

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.

Conexi贸n de contenedores en una red 1/2

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

Conexi贸n de contenedores en una red 2/2

Docker

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.

Comunicaci贸n entre contenedores en redes diferentes 1/2

Docker

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.

Comunicaci贸n entre contenedores en redes diferentes 2/2

Docker

Esto permite construir aplicaciones distribuidas y escalables que pueden funcionar en entornos de m煤ltiples hosts sin comprometer la conectividad de red.

Vol煤menes en Docker

Docker

En esta secci贸n, aprenderemos a utilizar vol煤menes en Docker para persistir datos entre ejecuciones de contenedores.

  • Creaci贸n de vol煤menes
  • Asignaci贸n de vol煤menes a contenedores
  • Copia de datos entre vol煤menes y el sistema host
  • Uso de vol煤menes an贸nimos y nombrados

Creaci贸n de vol煤menes

Docker

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.

Asignaci贸n de vol煤menes a contenedores

Docker

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.

Copia de datos entre vol煤menes y el sistema host

Docker

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.

Uso de vol煤menes an贸nimos y nombrados 1/2

Docker

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.

Uso de vol煤menes an贸nimos y nombrados 2/2

Docker

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.

Ejemplos 馃殌

Docker

Veremos algunos ejemplos pr谩cticos para entender mejor los conceptos de Docker:

  • Crear un contenedor simple
  • Montar un volumen
  • Conectar contenedores en una red

Ejemplo 1: Crear un contenedor simple

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.

Ejemplo 2: Montar un volumen 1/2

Docker

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

Ejemplo 2: Montar un volumen 2/2

Docker

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.

Ejemplo 3: Conectar contenedores en una red 1/2

Docker

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

Ejemplo 3: Conectar contenedores en una red 2/2

Docker

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.

Ejercicios Pr谩cticos 馃捇

Docker

En esta secci贸n, practicaremos lo aprendido con ejercicios para reforzar los conocimientos sobre Docker:

  • Crear un Dockerfile para una aplicaci贸n Python simple
  • Ejecutar y probar la aplicaci贸n en un contenedor
  • Crear un contenedor con una base de datos y conectarlo a una aplicaci贸n Django

Ejercicio 1: Crear un Dockerfile para una aplicaci贸n Python simple 1/2

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"]
			

Ejercicio 1: Crear un Dockerfile para una aplicaci贸n Python simple 2/2

Docker

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.

Ejercicio 2: Ejecutar y probar la aplicaci贸n en un contenedor 1/2

Docker

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
			

Ejercicio 2: Ejecutar y probar la aplicaci贸n en un contenedor 2/2

Docker

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.

Ejercicio 3: Crear un contenedor con una base de datos y conectarlo a una aplicaci贸n Django 1/3

Docker

En este ejercicio, crearemos un contenedor Docker con una base de datos y lo conectaremos a una aplicaci贸n Django.

Ejercicio 3: Crear un contenedor con una base de datos y conectarlo a una aplicaci贸n Django 2/3

Docker

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
			

Ejercicio 3: Crear un contenedor con una base de datos y conectarlo a una aplicaci贸n Django 3/3

Docker

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.

Pr贸ximos Pasos 鉃★笍 1/6

Docker

隆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!

Pr贸ximos Pasos 鉃★笍 2/6

Docker
  • Practica m谩s con Docker: Experimenta con diferentes comandos, crea y gestiona contenedores, y profundiza en el uso de Dockerfile para crear im谩genes personalizadas.
  • Explora la integraci贸n de Docker con Django y React: Aprende c贸mo utilizar Docker para desarrollar, probar y desplegar aplicaciones web basadas en Django y React de manera eficiente y reproducible.

Pr贸ximos Pasos 鉃★笍 3/6

Docker
  • Participa en proyectos de c贸digo abierto: 脷nete a proyectos de c贸digo abierto que utilicen Docker en su desarrollo. Esto te brindar谩 la oportunidad de colaborar con otros desarrolladores y ganar experiencia pr谩ctica en el uso de Docker en entornos reales.

Pr贸ximos Pasos 鉃★笍 4/6

Docker
  • Contin煤a tu formaci贸n: Considera realizar cursos avanzados sobre Docker, asistir a conferencias o participar en comunidades en l铆nea para mantenerte actualizado sobre las 煤ltimas tendencias y pr谩cticas en el mundo de la contenerizaci贸n.

Pr贸ximos Pasos 鉃★笍 5/6

Docker
  • Aplica lo aprendido en proyectos personales: Crea tus propios proyectos utilizando Docker para desarrollar aplicaciones web, servicios backend, o cualquier otro tipo de aplicaci贸n que te interese. Esto te ayudar谩 a consolidar tus conocimientos y mejorar tus habilidades pr谩cticas.

Pr贸ximos Pasos 鉃★笍 6/6

Docker

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!

隆Gracias!

Diego Savedra

Facilitador: Diego Saavedra

Correo: dsaavedra@codingsacademy.com