Cómo usar eficazmente la CLI de Docker

DockerBeginner
Practicar Ahora

Introducción

La CLI de Docker es una herramienta poderosa que permite a los desarrolladores interactuar con los contenedores, imágenes y redes de Docker a través de interfaces de línea de comandos. Este tutorial completo te guiará a través de las técnicas esenciales de la CLI de Docker, ayudándote a comprender cómo gestionar y manipular contenedores de forma eficiente, construir entornos de desarrollo robustos y optimizar tu flujo de trabajo de contenedorización.

Conceptos Básicos de la CLI de Docker

¿Qué es la CLI de Docker?

La Interfaz de Línea de Comandos (CLI) de Docker es una herramienta potente que permite a los usuarios interactuar con el demonio de Docker y gestionar contenedores, imágenes, redes y volúmenes. Ofrece una interfaz basada en texto para ejecutar comandos de Docker y realizar diversas operaciones.

Instalación y Configuración

Antes de usar la CLI de Docker, asegúrate de que Docker esté instalado en tu sistema Ubuntu 22.04:

## Actualizar el índice de paquetes
sudo apt update

## Instalar Docker
sudo apt install docker.io

## Verificar la instalación
docker --version

Estructura Básica de la CLI de Docker

Los comandos de la CLI de Docker siguen una sintaxis estándar:

docker <objeto> <comando> <opciones>

Categorías de Comandos

Categoría Propósito
Comandos de Gestión Gestionar objetos Docker
Comandos de Imágenes Extraer, construir y gestionar imágenes
Comandos de Contenedores Crear, ejecutar y controlar contenedores
Comandos de Redes Configurar redes Docker
Comandos de Volúmenes Gestionar el almacenamiento de datos persistentes

Autenticación y Permisos

graph TD A[Usuario] --> B{CLI de Docker} B --> |Requiere Sudo| C[Permisos de Root] B --> |Grupo de Usuario| D[Acceso al Grupo Docker]

Para evitar usar sudo para cada comando, añade tu usuario al grupo docker:

## Añadir el usuario actual al grupo docker
sudo usermod -aG docker $USER

## Reiniciar la sesión
newgrp docker

Configuración de la CLI de Docker

Los archivos de configuración se encuentran típicamente en:

  • /etc/docker/daemon.json (global)
  • ~/.docker/config.json (específico del usuario)

Conceptos Clave

  1. Demonio de Docker: Servicio de fondo que gestiona los objetos de Docker.
  2. Cliente de Docker: Herramienta CLI para interactuar con el demonio.
  3. Objetos de Docker: Imágenes, Contenedores, Redes, Volúmenes.

Entendiendo estos fundamentos, los usuarios pueden aprovechar eficazmente la CLI de Docker para tareas de contenedorización. LabEx recomienda practicar estos comandos fundamentales para construir una base sólida en la gestión de Docker.

Common Docker Commands

Image Management Commands

Pulling Images

## Pull an image from Docker Hub
docker pull ubuntu:latest
docker pull nginx:1.21

Listing Images

## List all local images
docker images
docker image ls

Building Images

## Build image from Dockerfile
docker build -t myapp:v1 .

Container Operations

Running Containers

## Run a new container
docker run -d --name web-server nginx
docker run -it ubuntu:latest /bin/bash

Container Management Commands

Command Description Example
docker ps List running containers docker ps
docker ps -a List all containers docker ps -a
docker start Start stopped container docker start web-server
docker stop Stop running container docker stop web-server
docker rm Remove container docker rm web-server

Networking Commands

graph TD A[Docker Network Commands] A --> B[Create Network] A --> C[List Networks] A --> D[Inspect Network]

Network Operations

## Create a custom network
docker network create mynetwork

## List networks
docker network ls

## Connect container to network
docker network connect mynetwork web-server

Volume Management

## Create a volume
docker volume create mydata

## List volumes
docker volume ls

## Mount volume to container
docker run -v mydata:/app nginx

Debugging and Inspection

## View container logs
docker logs web-server

## Execute command in running container
docker exec -it web-server bash

## Inspect container details
docker inspect web-server

Advanced Commands

Cleaning Up

## Remove unused images
docker image prune

## Remove all stopped containers
docker container prune

Best Practices

  1. Always use specific image tags
  2. Remove unnecessary containers and images
  3. Use volume for persistent data
  4. Leverage network isolation

LabEx recommends mastering these common Docker CLI commands to efficiently manage containerized environments.

Patrones de Flujo de Trabajo de Docker CLI

Flujo de Trabajo de Desarrollo

graph TD A[Desarrollo de Código] --> B[Construir Imagen de Docker] B --> C[Probar Contenedor] C --> D[Publicar en Registro] D --> E[Implementar Contenedor]

Ciclo de Desarrollo Típico

## Clonar proyecto
git clone https://github.com/example/project

## Crear Dockerfile
touch Dockerfile

## Construir imagen
docker build -t myapp:dev .

## Ejecutar contenedor para pruebas
docker run -d --name test-container myapp:dev

Flujo de Trabajo de Integración Continua

Construcción y Pruebas

## Construir imagen con argumentos de construcción
docker build --build-arg ENV=desarrollo -t myapp:ci .

## Ejecutar pruebas automatizadas
docker run --rm myapp:ci npm test

Gestión del Ciclo de Vida del Contenedor

Etapas del Flujo de Trabajo

Etapa Comando de Docker Propósito
Construcción docker build Crear imagen
Pruebas docker run Validar contenedor
Publicación docker push Compartir imagen
Implementación docker run Ejecutar en producción

Implementación de Múltiples Contenedores

Flujo de Trabajo con Docker Compose

## Definir servicios en docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "8000:80"
database:
image: postgres:latest

## Iniciar entorno de múltiples contenedores
docker-compose up -d

Patrón de Microservicios

graph TD A[Servicio API] --> B[Servicio de Base de Datos] A --> C[Servicio de Caché] A --> D[Servicio de Autenticación]

Gestión de Servicios

## Crear red para microservicios
docker network create microservices-net

## Ejecutar servicios con conexión a la red
docker run -d --name api --network microservices-net myapi
docker run -d --name database --network microservices-net mydb

Flujo de Trabajo de Depuración

Pasos para la Resolución de Problemas

## Inspeccionar registros del contenedor
docker logs api-service

## Ejecutar shell interactivo
docker exec -it api-service /bin/bash

## Comprobar el uso de recursos del contenedor
docker stats api-service

Flujo de Trabajo de Implementación de Producción

Estrategia de Etiquetado de Imágenes

## Etiquetar imagen para producción
docker tag myapp:latest myregistry.com/myapp:v1.0

## Publicar en un registro privado
docker push myregistry.com/myapp:v1.0

## Extraer y ejecutar en producción
docker pull myregistry.com/myapp:v1.0
docker run -d myregistry.com/myapp:v1.0

Buenas Prácticas

  1. Usar etiquetas de imagen específicas.
  2. Implementar construcciones multietapa.
  3. Minimizar el tamaño de la imagen.
  4. Usar Docker Compose para configuraciones complejas.

LabEx recomienda practicar estos patrones de flujo de trabajo para optimizar la gestión y el despliegue de contenedores Docker.

Resumen

Dominando los comandos de la línea de comandos de Docker y los patrones de flujo de trabajo, los desarrolladores pueden mejorar significativamente sus habilidades de gestión de contenedores. Este tutorial te ha proporcionado técnicas fundamentales para navegar, crear, gestionar y optimizar contenedores Docker, permitiéndote aprovechar todo el potencial de Docker en los escenarios modernos de desarrollo y despliegue de software.