Skip to Content

Docker / Podman

Este artículo cubre cómo instalar y utilizar las tecnologías de contenedores Docker y Podman en Ubuntu 26.04.

Instalación de Docker CE

Eliminar versiones antiguas

sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null

Instalar Docker CE

# Install dependencies sudo apt update sudo apt install ca-certificates curl gnupg -y # Add Docker official GPG key sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # Add Docker repository echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Install Docker sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Utilice Docker Sin sudo

# Add current user to the docker group sudo usermod -aG docker $USER # Apply group changes (or log out and back in) newgrp docker

Verificar la instalación

docker --version docker compose version docker run hello-world

Configurar espejo Docker (China)

Editar /etc/docker/daemon.json:

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me" ] } EOF # Restart Docker sudo systemctl daemon-reload sudo systemctl restart docker

Docker Conceptos básicos

Operaciones de imagen

# Pull an image docker pull ubuntu:26.04 docker pull nginx:latest # List local images docker images # Remove an image docker rmi nginx:latest # Build an image docker build -t myapp:latest . # Clean up unused images docker image prune -a

Operaciones de contenedores

# Run a container docker run -d --name mynginx -p 8080:80 nginx # List running containers docker ps # List all containers docker ps -a # Enter a container docker exec -it mynginx bash # View container logs docker logs -f mynginx # Stop and remove a container docker stop mynginx docker rm mynginx # Clean up all stopped containers docker container prune

Volúmenes

# Create a volume docker volume create mydata # Mount a volume docker run -d -v mydata:/data --name mycontainer ubuntu # Mount a host directory docker run -d -v /home/user/data:/data --name mycontainer ubuntu # List volumes docker volume ls docker volume inspect mydata

Docker Redactar

Docker Compose se utiliza para definir y ejecutar aplicaciones de múltiples contenedores.

Ejemplo: aplicación web + base de datos

Cree compose.yaml:

services: web: image: nginx:latest ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html depends_on: - db db: image: postgres:18 environment: POSTGRES_DB: mydb POSTGRES_USER: admin POSTGRES_PASSWORD: secret volumes: - pgdata:/var/lib/postgresql/data ports: - "5432:5432" redis: image: redis:7-alpine ports: - "6379:6379" volumes: pgdata:

Comandos de redacción comunes

# Start all services docker compose up -d # Check service status docker compose ps # View logs docker compose logs -f web # Stop all services docker compose down # Stop and remove volumes docker compose down -v # Rebuild and start docker compose up -d --build

Escribir un archivo Docker

Un ejemplo típico de construcción de varias etapas:

# Build stage FROM node:22-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Runtime stage FROM node:22-alpine WORKDIR /app COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules ./node_modules EXPOSE 3000 CMD ["node", "dist/index.js"]

Podman: una alternativa a Docker

Podman es un motor de contenedor sin demonio que es compatible con la CLI Docker.

Instalar Podman

sudo apt install podman -y

Verifique la instalación:

podman --version podman info

Podman Conceptos básicos

Los comandos Podman son casi idénticos a Docker:

# Pull and run a container podman pull docker.io/library/nginx podman run -d --name mynginx -p 8080:80 nginx # List containers podman ps # Stop and remove podman stop mynginx podman rm mynginx

Diferencias entre Podman y Docker

  • Daemonless: Podman no requiere un proceso de demonio en segundo plano
  • Sin raíz: Podman ejecuta contenedores como un usuario normal de forma predeterminada, lo que proporciona mayor seguridad
  • Compatibilidad con Pod: Podman admite de forma nativa el concepto Pod (similar a Kubernetes Pods)
  • Compatibilidad: la gran mayoría de los comandos Docker se pueden reemplazar directamente con Podman

Configurar el alias de compatibilidad Docker

echo 'alias docker=podman' >> ~/.bashrc source ~/.bashrc

Podman Redactar

# Install podman-compose (prefer apt or pipx to avoid the PEP 668 restriction) sudo apt install -y podman-compose # Or: sudo apt install -y pipx && pipx install podman-compose # Usage is the same as docker compose podman-compose up -d podman-compose down

Docker Mantenimiento del sistema

# Check disk usage docker system df # Full cleanup (use with caution) docker system prune -a --volumes # Check Docker service status sudo systemctl status docker

Docker y Podman tienen cada uno sus puntos fuertes. Docker tiene un ecosistema más maduro, mientras que Podman ofrece mejor seguridad y no requiere un demonio. Elija según sus necesidades.

Preguntas frecuentes

¿Debo elegir Docker o Podman?

Si es principiante o necesita colaborar con un equipo, se recomienda Docker porque tiene un ecosistema más maduro, documentación más rica y soporte comunitario más amplio. Si prioriza la seguridad o trabaja en un entorno sin privilegios de root, Podman es la mejor opción ya que no requiere un demonio y se ejecuta como usuario no root de forma predeterminada.

¿Puedo usar la versión Snap de Docker?

Se pueden usar el paquete docker.io en el repositorio Ubuntu y la versión Snap de Docker, pero normalmente van por detrás de la versión CE oficial de Docker y pueden tener problemas de compatibilidad. Recomendamos instalar Docker CE desde el repositorio oficial Docker como se describe en este artículo para obtener la última versión y la mejor compatibilidad.

¿Necesito sudo para usar Docker?

De forma predeterminada, se requieren privilegios sudo para ejecutar comandos Docker. Después de agregar su usuario al grupo docker, puede usar Docker sin sudo (ejecute sudo usermod -aG docker $USER, luego cierre sesión y vuelva a iniciarla). Tenga en cuenta que estar en el grupo de Docker equivale a tener privilegios de root, así que tenga cuidado en entornos multiusuario.

Artículos relacionados