Comandos fundamentales de Docker
Docker permite empaquetar aplicaciones y sus dependencias en contenedores aislados. A continuación, se detallan los comandos esenciales para la gestión de imágenes y contenedores.
Gestión de imágenes
Las imágenes son plantillas de solo lectura que contienen las instrucciones para crear un contenedor.
- Listar imágenes locales:```
docker images
- Eliminar una imagen:```
docker rmi node:18-alpine
- Descargar una imagen desde un registro:```
docker pull python:3.11-slim
- Publicar una imagen en un registro:```
docker push registry.example.com/my-app:2.0.1
- Autenticarse en un registro privado:```
docker login registry.example.com
Gestión de contenedores
Un contenedor es una instancia en ejecución de una imagen.
- Listar contenedores en ejecución:```
docker ps
Para incluir contenedores detenidos:
docker ps -a - Iniciar un contenedor detenido:```
docker start web-server-01
- Detener un contanedor en ejecución:```
docker stop web-server-01
- Reiniciar un contenedor:```
docker restart web-server-01
- Visualizar registros (logs) en tiempo real:```
docker logs -f --tail 50 web-server-01
- Copiar archivos desde un contenedor al host:```
docker cp web-server-01:/var/log/app/error.log ./local_logs/
- Acceder a la terminal de un contenedor:```
docker exec -it web-server-01 /bin/sh
Exportación e importación de imágenes
Para transferir imágenes sin utilizar un registro, se pueden exportar e importar como archivos tar.
- Exportar una imagen a un archivo:```
docker save -o redis-backup.tar redis:7.2-alpine
- Importar una imagen desde un archivo:```
docker load -i redis-backup.tar
Ejecución y eliminación de contenedores
- Crear y ejecutar un nuevo contenedor:```
Ejecutar en segundo plano con mapeo de puertos
docker run -d -p 8080:80 --name frontend-app nginx:latest - Eliminar un contenedor:```
docker rm frontend-app
Forzar la eliminación si está en ejecución:
docker rm -f frontend-app
Conceptos fundamentales de Shell
El Shell actúa como un intérprete de comandos que procesa las instrucciones del usuario y las transmite al sistema operativo.
Definición y tipos de Shell
El Shell es una interfaz de línea de comandos que interpreta y ejecuta scripts y comandos. Las variantes más comunes incluyen:
- Bash (Bourne Again Shell): El estándar predeterminado en la mayoría de las distribuciones Linux.
- sh (Bourne Shell): La versión original, ampliamente utilizada por su compatibilidad.
- zsh (Z Shell): Popular por sus funciones avanzadas de autocompletado y personalización.
Manejo de argumentos en scripts
Los scripts de Shell pueden recibir parámetros directamente desde la línea de comandos. Estos se acceden mediante variables posicionales:
$1,$2, etc.: Representan el primer, segundo y subsiguientes argumentos.$#: Indica el número total de argumentos pasados.
Ejemplo de implementación en un script de despliegue (deploy.sh):
#!/bin/bash
ENVIRONMENT=$1
VERSION=$2
echo "Desplegando versión $VERSION en el entorno $ENVIRONMENT"
echo "Total de parámetros recibidos: $#"
Ejecución: ./deploy.sh production 3.4.0
Enlaces duros y enlaces simbólicos
El sistema de archivos permite crear referencias a archivos existentes mediante enlaces.
- Enlace duro (Hard Link): Crea una referencia directa al mismo inodo en el disco. Si el archivo original se elimina, el enlace duro mantiene los datos intactos. ```
ln database_config.ini db_config_backup.ini
- Enlace simbólico (Soft Link): Funciona como un acceso directo que apunta a la ruta del archivo original. Si el archivo original se borra, el enlace simbólico queda roto. ```
ln -s /etc/nginx/nginx.conf ./nginx_shortcut.conf