Introducción
En este tema, exploraremos cómo PowerShell puede ser utilizado para interactuar y gestionar contenedores Docker. Docker es una plataforma que permite a los desarrolladores empaquetar aplicaciones en contenedores, que son entornos ligeros y portátiles. PowerShell, con su capacidad de automatización y scripting, es una herramienta poderosa para gestionar estos contenedores de manera eficiente.
Contenidos
Instalación de Docker
Antes de comenzar a trabajar con Docker en PowerShell, necesitamos instalar Docker en nuestro sistema.
Pasos para la Instalación
-
Descargar Docker Desktop:
- Visita el sitio web oficial de Docker: Docker Desktop.
- Descarga la versión correspondiente a tu sistema operativo (Windows o macOS).
-
Instalar Docker Desktop:
- Ejecuta el instalador descargado y sigue las instrucciones en pantalla.
- Asegúrate de habilitar la integración con WSL 2 (Windows Subsystem for Linux) si estás en Windows.
-
Verificar la Instalación:
- Abre PowerShell y ejecuta el siguiente comando para verificar que Docker está instalado correctamente:
docker --version
- Deberías ver la versión de Docker instalada.
- Abre PowerShell y ejecuta el siguiente comando para verificar que Docker está instalado correctamente:
Comandos Básicos de Docker en PowerShell
Una vez que Docker está instalado, podemos comenzar a utilizar comandos Docker desde PowerShell.
Comandos Esenciales
-
Verificar el Estado de Docker:
docker info
Este comando proporciona información detallada sobre la configuración y el estado actual de Docker.
-
Listar Contenedores:
docker ps
Muestra una lista de contenedores en ejecución. Para ver todos los contenedores (incluidos los detenidos), usa:
docker ps -a
-
Listar Imágenes:
docker images
Muestra una lista de todas las imágenes Docker disponibles en tu sistema.
Creación y Gestión de Contenedores
Crear un Contenedor
Para crear y ejecutar un contenedor, utilizamos el comando docker run
. Por ejemplo, para ejecutar un contenedor con la imagen nginx
:
-d
: Ejecuta el contenedor en segundo plano (detached mode).-p 80:80
: Mapea el puerto 80 del contenedor al puerto 80 del host.--name mynginx
: Asigna un nombre al contenedor.nginx
: Especifica la imagen a utilizar.
Detener y Eliminar Contenedores
-
Detener un Contenedor:
docker stop mynginx
-
Eliminar un Contenedor:
docker rm mynginx
Trabajando con Imágenes Docker
Descargar Imágenes
Para descargar una imagen desde Docker Hub:
Crear una Imagen Personalizada
Podemos crear una imagen personalizada utilizando un Dockerfile
. Un Dockerfile
es un archivo de texto que contiene instrucciones para construir una imagen Docker.
Ejemplo de Dockerfile
# Utiliza una imagen base de Ubuntu FROM ubuntu:latest # Instala Apache RUN apt-get update && apt-get install -y apache2 # Copia el contenido del directorio actual al contenedor COPY . /var/www/html # Expone el puerto 80 EXPOSE 80 # Comando para ejecutar Apache CMD ["apache2ctl", "-D", "FOREGROUND"]
Construir una Imagen
Para construir una imagen a partir de un Dockerfile
:
-t myapache
: Asigna un nombre y etiqueta a la imagen..
: Especifica el directorio actual como contexto de construcción.
Automatización de Tareas Docker con PowerShell
PowerShell puede ser utilizado para automatizar tareas Docker mediante scripts. Aquí hay un ejemplo de un script que crea y ejecuta un contenedor, y luego limpia los recursos.
Ejemplo de Script PowerShell
# Descargar la imagen de nginx docker pull nginx # Crear y ejecutar un contenedor docker run -d -p 8080:80 --name mynginx nginx # Esperar 10 segundos Start-Sleep -Seconds 10 # Detener el contenedor docker stop mynginx # Eliminar el contenedor docker rm mynginx # Eliminar la imagen docker rmi nginx
Ejercicios Prácticos
Ejercicio 1: Crear y Ejecutar un Contenedor
- Descarga la imagen
hello-world
desde Docker Hub. - Crea y ejecuta un contenedor utilizando la imagen
hello-world
. - Verifica que el contenedor se ha ejecutado correctamente.
Ejercicio 2: Crear una Imagen Personalizada
- Crea un
Dockerfile
que instalenginx
en una imagen base dealpine
. - Construye la imagen utilizando el
Dockerfile
. - Ejecuta un contenedor utilizando la imagen personalizada y verifica que
nginx
está funcionando.
Soluciones
Solución Ejercicio 1
-
Descargar la imagen:
docker pull hello-world
-
Crear y ejecutar el contenedor:
docker run hello-world
-
Verificar la ejecución:
- Deberías ver un mensaje de bienvenida de Docker en la consola.
Solución Ejercicio 2
-
Crear un
Dockerfile
:FROM alpine:latest RUN apk add --no-cache nginx CMD ["nginx", "-g", "daemon off;"]
-
Construir la imagen:
docker build -t mynginx .
-
Ejecutar el contenedor:
docker run -d -p 8080:80 mynginx
-
Verificar que
nginx
está funcionando:- Abre un navegador web y navega a
http://localhost:8080
.
- Abre un navegador web y navega a
Conclusión
En este tema, hemos aprendido cómo utilizar PowerShell para interactuar y gestionar contenedores Docker. Hemos cubierto desde la instalación de Docker hasta la creación y gestión de contenedores e imágenes, así como la automatización de tareas Docker con scripts de PowerShell. Con estos conocimientos, puedes empezar a integrar Docker en tus flujos de trabajo de PowerShell para mejorar la eficiencia y la portabilidad de tus aplicaciones.
Curso de PowerShell
Módulo 1: Introducción a PowerShell
- ¿Qué es PowerShell?
- Instalación y Configuración de PowerShell
- Consola de PowerShell e ISE
- Comandos Básicos y Sintaxis
- Sistema de Ayuda en PowerShell
Módulo 2: Scripting Básico
- Variables y Tipos de Datos
- Operadores en PowerShell
- Sentencias Condicionales
- Bucles en PowerShell
- Funciones y Scripts
Módulo 3: Trabajando con Objetos
- Entendiendo los Objetos
- Propiedades y Métodos de los Objetos
- Pipelines y Manipulación de Objetos
- Filtrado y Selección de Objetos
- Ordenación y Agrupación de Objetos
Módulo 4: Técnicas Avanzadas de Scripting
- Manejo de Errores
- Depuración de Scripts
- Expresiones Regulares
- Trabajando con Archivos y Directorios
- Uso de Módulos y Snap-ins
Módulo 5: Automatización y Programación de Tareas
- Introducción a la Automatización
- Creación de Tareas Programadas
- Uso de PowerShell para Administración del Sistema
- Automatización de Tareas de Active Directory
- Automatización de Tareas de Red
Módulo 6: PowerShell Remoting
- Introducción al Remoting
- Configuración del Remoting
- Uso de Invoke-Command
- Gestión de Sesiones
- Consideraciones de Seguridad
Módulo 7: Funcionalidades Avanzadas de PowerShell
- Perfiles de PowerShell
- Personalización del Entorno de PowerShell
- Creación y Uso de Clases
- Trabajando con XML y JSON
- Uso de PowerShell con REST APIs
Módulo 8: PowerShell y DevOps
- Introducción a DevOps
- Uso de PowerShell con Pipelines de CI/CD
- Infraestructura como Código (IaC)
- Gestión de Recursos en la Nube con PowerShell
- PowerShell y Docker