Editado 2 hace meses por ExtremeHow Equipo Editorial
Docker EscritorioDesarrolloUsoDesarrollo de softwareDevOpsEntorno LocalComputación en la NubeVirtualizaciónProductividadFlujo de trabajo
Traducción actualizada 2 hace meses
El desarrollo local se refiere al proceso de escribir y probar tu código en tu máquina local antes de desplegarlo en un servidor de producción. Docker Desktop es una herramienta útil que permite a los desarrolladores ejecutar aplicaciones en contenedores localmente, haciendo el proceso de desarrollo local más eficiente, escalable y manejable. Este documento proporciona una guía detallada sobre cómo usar Docker Desktop para desarrollo local, incluso si eres nuevo en estos conceptos. Al final de la guía, deberías tener una comprensión clara de Docker, Docker Desktop y cómo usarlos eficazmente en tu flujo de trabajo de desarrollo local. Vamos a comenzar.
Antes de adentrarse en Docker Desktop, es importante entender qué es Docker. Docker es una plataforma que te permite desarrollar, enviar y ejecutar aplicaciones en contenedores. Los contenedores te permiten empaquetar una aplicación con todas sus dependencias y configuración en una sola unidad que puede ejecutarse consistentemente en diferentes entornos. Esta consistencia asegura que la aplicación se comporte de la misma manera durante el desarrollo, las pruebas y la producción.
Docker Desktop es una aplicación para construir y compartir aplicaciones contenedorizadas y microservicios para máquinas con MacOS y Windows. Docker Desktop incluye Docker Engine, Cliente CLI de Docker, Docker Compose, Docker Content Trust, Kubernetes, y Credential Helper. Es una solución integral para desarrolladores que necesitan construir, gestionar y desplegar aplicaciones contenedorizadas localmente. Con Docker Desktop, obtienes una interfaz sencilla y un conjunto completo de herramientas para gestionar contenedores, lo que lo convierte en una opción preferida para los desarrolladores que trabajan en proyectos locales.
Primero, necesitas instalar Docker Desktop en tu máquina. Sigue estos pasos:
docker --version
. Esto debería mostrar la versión de Docker si está instalado correctamente.Después de la instalación, es posible que necesites hacer alguna configuración inicial:
Cada contenedor que ejecutas en Docker se construye utilizando un Dockerfile. Un Dockerfile es un archivo de texto plano que contiene instrucciones para construir una imagen de Docker. Aquí tienes un ejemplo básico de un Dockerfile para una simple aplicación Python:
# Usa una imagen de tiempo de ejecución oficial de Python como imagen base FROM python:3.8-slim # Establece el directorio de trabajo WORKDIR /app # Copia el contenido del directorio actual en el contenedor en /app COPY . /app # Instala cualquier paquete necesario especificado en requirements.txt RUN pip install --no-cache-dir -r requirements.txt # Hace el puerto 80 disponible para el mundo fuera de este contenedor EXPOSE 80 # Ejecuta app.py cuando el contenedor se inicie CMD ["python", "app.py"]
Este Dockerfile realiza las siguientes tareas:
FROM python:3.8-slim
: Esto le indica a Docker que use la imagen de Python 3.8 slim como imagen base.WORKDIR /app
: Esto configura el directorio de trabajo dentro del contenedor a /app.COPY . /app
: Esto copia el contenido del directorio actual (los archivos de tu aplicación) dentro del contenedor.RUN pip install --no-cache-dir -r requirements.txt
: Esto instala los paquetes Python requeridos listados en el archivo requirements.txt.EXPOSE 80
: Esto permite que la aplicación se comunique a través del puerto 80.CMD ["python", "app.py"]
: Esto especifica el comando para ejecutar cuando el contenedor se inicie.Una vez que tienes un Dockerfile, puedes construir una imagen Docker. Ve al directorio que contiene tu Dockerfile en la terminal y ejecuta el siguiente comando:
docker build -t my-python-app .
La descripción detallada de este comando es la siguiente:
docker build
es el comando para construir una imagen Docker desde un Dockerfile.-t my-python-app
etiqueta la imagen con un nombre, en este caso, "my-python-app"..
Especifica la ubicación del contexto de construcción, que es el directorio actual.Después de construir tu imagen, puedes ejecutarla como un contenedor. Usa el siguiente comando para iniciar un contenedor desde tu imagen:
docker run -d -p 4000:80 my-python-app
Explicación de este comando:
docker run
ejecuta el comando para iniciar un nuevo contenedor.-d
Ejecuta el contenedor en modo aislado (en segundo plano).-p 4000:80
mapea el puerto 4000 en tu host al puerto 80 en el contenedor, permitiéndote acceder a la aplicación en localhost:4000.my-python-app
se refiere a la imagen de Docker que creaste anteriormente.Cuando trabajas en desarrollo local, especialmente con aplicaciones que consisten en múltiples servicios o microservicios, el proceso de gestionar estos servicios puede simplificarse utilizando Docker Compose. Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multi-contenedor. Aquí tienes un ejemplo de archivo docker-compose.yml
:
version: '3' services: web: image: my-python-app ports: - "4000:80" database: image: postgres environment: POSTGRES_USER: example POSTGRES_PASSWORD: example
En este ejemplo:
my-python-app
que construiste, y mapea el puerto 4000 en el host al puerto 80 en el contenedor.Para iniciar tu aplicación multi-contenedor especificada en docker-compose.yml
, ejecuta el siguiente comando en la terminal:
docker-compose up
Este comando crea, (re)crea, inicia y adjunta contenedores a un servicio. Puedes detener la aplicación usando docker-compose down
, que detendrá y eliminará los contenedores.
Una vez que tus contenedores están en ejecución, es posible que necesites realizar una variedad de tareas de gestión. Aquí hay algunos comandos comunes:
docker ps
: Lista todos los contenedores en ejecución.docker stop <container-id>
: Detiene un contenedor en ejecución usando su ID.docker start <container-id>
: Inicia un contenedor detenido usando su ID.docker logs <container-id>
: Muestra los logs del contenedor, lo cual es útil para depuración.docker exec -it <container-id> /bin/bash
: Abre una instancia de shell dentro de un contenedor en ejecución, permitiéndote inspeccionarlo e interactuar con él manualmente.docker rm <container-id>
: Elimina un contenedor detenido de tu sistema.docker rmi <image-id>
: Elimina la imagen de tu sistema, liberando espacio en disco.Si quieres compartir tus imágenes Docker con otros o usarlas en otros sistemas, puedes enviarlas a Docker Hub, un repositorio basado en la nube. Aquí te explico cómo puedes hacerlo:
docker login
.docker tag my-python-app <your-username>/my-python-app
.docker push <your-username>/my-python-app
.Una vez subida, tu imagen estará disponible en tu cuenta de Docker Hub, y puedes extraerla a otras máquinas usando docker pull <your-username>/my-python-app
.
Siempre incluye tus Dockerfiles en tu sistema de control de versiones. Esto asegura que la configuración exacta del entorno del contenedor se rastree junto con el código fuente de tu aplicación. Esta práctica ayudará a cualquiera que trabaje en tu aplicación, incluyéndote a ti en el futuro, a crear fácilmente entornos.
Las imágenes Docker grandes toman más tiempo para construirse, transferirse y ejecutarse. Por lo tanto, reducir el tamaño de la imagen es muy importante para la eficiencia. Puedes reducir el tamaño de la imagen al:
Aquí tienes un ejemplo de un Dockerfile de múltiples etapas:
# Etapa de construcción FROM golang:1.15 as builder WORKDIR /app COPY . . RUN go build -o myapp # Etapa final FROM alpine:latest WORKDIR /app COPY --from=builder /app/myapp . ENTRYPOINT ["./myapp"]
La seguridad no debe pasarse por alto cuando se trabaja con Docker. Aquí tienes algunas prácticas para mejorar la seguridad:
USER
en el Dockerfile.Establece un sistema de registro y monitoreo para tu entorno Docker. Considera usar herramientas como el controlador de registros nativo de Docker, Prometheus para métricas, y Grafana para hermosas visualizaciones de datos. Con un monitoreo adecuado, obtendrás información sobre el comportamiento y rendimiento de tus contenedores, permitiéndote reaccionar rápidamente a cualquier problema.
Docker Desktop es una herramienta esencial para desarrolladores que quieren aprovechar la tecnología de contenedores en sus máquinas de desarrollo local. Al permitir que las aplicaciones se ejecuten en contenedores separados, Docker Desktop simplifica la configuración y gestión de los entornos de desarrollo. Aumenta la estabilidad y reduce el problema de asegurar que funcione en mi máquina al empaquetar todo lo necesario para ejecutar la aplicación junto.
Esta guía proporciona una visión detallada de Docker Desktop, desde la instalación y configuración hasta la creación y ejecución de contenedores y las mejores prácticas para usar Docker en desarrollo local. Al integrar Docker Desktop en tus procesos de desarrollo, obtienes un poderoso aliado para construir, probar y desplegar aplicaciones robustas de manera más eficiente.
Como con cualquier tecnología, la clave para dominar Docker, y por extensión Docker Desktop, es la práctica constante y el aprendizaje continuo. Cuanto más apliques estos principios y explores el vasto ecosistema de herramientas y recursos de Docker, más competente te volverás.
Si encuentras algo incorrecto en el contenido del artículo, puedes