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/nullInstalar 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 -yUtilice 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 dockerVerificar la instalación
docker --version
docker compose version
docker run hello-worldConfigurar 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 dockerDocker 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 -aOperaciones 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 pruneVolú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 mydataDocker 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 --buildEscribir 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 -yVerifique la instalación:
podman --version
podman infoPodman 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 mynginxDiferencias 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 ~/.bashrcPodman 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 downDocker 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 dockerDocker 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
- Docker Orquestación del servicio Compose: implemente aplicaciones de contenedores múltiples con Docker Compose en un entorno de servidor
- Máquinas virtuales y contenedores: compare tecnologías de VM y contenedores para comprender sus respectivos casos de uso