Guías de instalación

Instalar Docker y el primer contenedor

Explicamos cómo instalar Docker Desktop y Docker Engine, ejecutar el primer contenedor, escribir un Dockerfile y montar un entorno multiservicio con docker compose.

Aurora YazılımEquipo editorial 6 min de lectura
Instalar Docker y el primer contenedor
¿Cómo se instala Docker?

Para la instalación de Docker, en Windows y macOS descargue el instalador de Docker Desktop desde docker.com; en Windows, antes debe estar activado WSL 2. En Linux, Docker Engine se instala desde el repositorio oficial. Tras la instalación, ejecute el comando docker run hello-world; si ve el mensaje de bienvenida, Docker funciona. Para proyectos con varios servicios se usa docker compose.

¿Qué es Docker y para qué sirve?

Docker es una plataforma que empaqueta una aplicación con todo lo que necesita y la ejecuta en entornos aislados llamados contenedores (containers). La aplicación, las bibliotecas y los ajustes se reúnen en una sola imagen; esa imagen se comporta igual dondequiera que se ejecute.

En la práctica, esto significa que el problema del «en mi ordenador funcionaba» desaparece en gran medida. El portátil del desarrollador, el servidor de pruebas y el servidor en producción usan la misma imagen. Un miembro nuevo del equipo levanta el proyecto con un solo comando, en lugar de pasar horas con la instalación.

Los contenedores se parecen a las máquinas virtuales, pero son mucho más ligeros. Cada uno no lleva un sistema operativo propio, sino que comparte el núcleo de la máquina anfitriona; por eso arrancan en segundos y consumen pocos recursos.

ConceptoEn resumen
Imagen (image)Plantilla de solo lectura de la aplicación; se genera a partir del Dockerfile
ContenedorInstancia en ejecución iniciada a partir de una imagen
DockerfileArchivo de texto que describe cómo se crea la imagen
VolumeEspacio de datos persistente que se conserva aunque se elimine el contenedor
Docker HubRegistro público donde se encuentran imágenes ya preparadas
Docker ComposeHerramienta que gestiona varios contenedores con un solo archivo

Requisitos antes de instalar

Docker Desktop ejecuta un pequeño entorno virtual en segundo plano; por eso su equipo debe tener activado el soporte de virtualización. En la mayoría de los equipos nuevos viene activado por defecto; si no, debe habilitar la opción Intel VT-x o AMD-V en los ajustes de BIOS/UEFI.

En Windows, Docker Desktop ejecuta los contenedores de Linux sobre WSL 2. Si WSL no está instalado, instálelo primero; explicamos los pasos en detalle en nuestra guía de instalación de WSL.

  • Memoria: si van a funcionar varios contenedores a la vez, al menos 8 GB de RAM permiten trabajar con holgura.
  • Espacio en disco: las imágenes se acumulan con el tiempo; reserve unas decenas de GB libres.
  • Licencia: Docker Desktop es gratuito para uso personal, educación y pequeñas empresas por debajo de cierto tamaño; las organizaciones mayores necesitan una suscripción de pago. Compruebe las condiciones actuales en docker.com.
powershellInstalación de WSL 2 (PowerShell como administrador)
wsl --install

# Tras la instalación, reinicie el equipo y después compruebe
wsl --status

Docker Desktop en Windows y macOS

Docker Desktop ofrece en un solo paquete Docker Engine, la herramienta de línea de comandos, Docker Compose y un panel de gestión visual. Descargue el instalador desde el sitio oficial e instálelo con los ajustes por defecto.

En Windows, durante la instalación asegúrese de que la opción Use WSL 2 instead of Hyper-V esté marcada. En macOS, elija la versión adecuada para su procesador: Apple Silicon (serie M) o Intel. Después de la instalación, abra la aplicación; Docker está listo cuando el icono de la ballena se fija en la barra de menús o en la barra de tareas.

powershellInstalación con winget en Windows
winget install -e --id Docker.DockerDesktop

Instalar Docker Engine en Linux

En Linux, Docker funciona directamente como Docker Engine, sin Docker Desktop; este es también el método estándar para servidores. El camino más seguro es seguir la instalación del repositorio específica para su distribución que figura en la documentación oficial. Para equipos de desarrollo, el script de conveniencia oficial de Docker hace lo mismo de una sola vez.

Si después de la instalación añade su usuario al grupo docker, no tendrá que escribir sudo delante de cada comando. Como este grupo otorga privilegios casi equivalentes a root, añada solo a los usuarios de confianza.

bashScript de conveniencia oficial (para entornos de desarrollo)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Para usarlo sin sudo
sudo usermod -aG docker $USER
newgrp docker

# Que el servicio se inicie con el arranque
sudo systemctl enable --now docker

Comprobar la instalación

Sea cual sea el sistema operativo que utilice, los comandos de comprobación son los mismos. La imagen hello-world se descarga de Docker Hub, se ejecuta, escribe una explicación en pantalla y termina. Si ve esa salida, la cadena de cliente, motor y descarga de imágenes funciona sin problemas.

bashComandos de comprobación
docker --version
docker compose version
docker run hello-world

Ejecutar el primer contenedor

Sigamos con un ejemplo real: iniciemos nginx, un servidor web ligero, como contenedor y abrámoslo en el navegador. La opción -d ejecuta el contenedor en segundo plano y -p 8080:80 conecta el puerto 8080 de su equipo con el puerto 80 del contenedor.

Tras ejecutar el comando, abra http://localhost:8080 en el navegador; debería ver la página de bienvenida de nginx. Los demás comandos siguientes le permiten supervisar el contenedor, entrar en él y limpiarlo.

bashContenedor nginx
docker run -d -p 8080:80 --name web nginx

# Contenedores en ejecución
docker ps

# Ver los registros
docker logs web

# Abrir un shell dentro del contenedor
docker exec -it web sh

# Durdur ve sil
docker stop web
docker rm web

# Imágenes descargadas
docker images

Publicar sus propios archivos

Para montar en el contenedor los archivos HTML de una carpeta se utiliza un bind mount. El comando siguiente monta la carpeta en la que se encuentra en la carpeta de publicación de nginx en modo de solo lectura; al editar el archivo y actualizar la página, verá el cambio al instante.

bash
docker run -d -p 8080:80 -v "$(pwd)":/usr/share/nginx/html:ro --name site nginx

Crear su propia imagen

Para convertir una aplicación Node.js en una imagen, añada a la raíz del proyecto un archivo llamado Dockerfile. Copiar primero los archivos package e instalar las dependencias evita que esa capa se reconstruya cuando cambia el código y acelera la compilación.

dockerfileDockerfile
FROM node:lts-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
bashCompilación y ejecución
docker build -t uygulamam .
docker run -d -p 3000:3000 uygulamam

Varios servicios con Docker Compose

Los proyectos reales suelen componerse de varias piezas: un servidor web, una base de datos y quizá una caché. En lugar de iniciar cada una con comandos docker run separados, con Docker Compose las define todas en un único archivo compose.yaml.

El ejemplo siguiente inicia juntos un servidor web nginx y una base de datos MariaDB. Como los archivos de la base de datos se guardan en un volume con nombre, los datos se conservan aunque se elimine el contenedor. La línea version que aparece en ejemplos antiguos ya no es necesaria.

yamlcompose.yaml
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./site:/usr/share/nginx/html:ro
    depends_on:
      - db

  db:
    image: mariadb:lts
    environment:
      MARIADB_ROOT_PASSWORD: degistirin
      MARIADB_DATABASE: uygulama
    volumes:
      - db-veri:/var/lib/mysql

volumes:
  db-veri:
bashComandos de Compose
docker compose up -d
docker compose ps
docker compose logs -f
docker compose down

# Volume'larla birlikte sil (veriler gider)
docker compose down -v

Errores frecuentes y soluciones

Los problemas que surgen al instalar Docker suelen estar relacionados con la virtualización, los permisos y los conflictos de puertos. Si las imágenes y los contenedores detenidos van llenando el disco, docker system prune limpia los recursos sin usar; el comando pide confirmación antes de borrar.

  • Error de WSL 2 / virtualización: active la virtualización en la BIOS, actualice WSL con wsl --update y reinicie el equipo.
  • port is already allocated: el puerto que ha elegido lo está usando otra aplicación. Elija otro puerto, como -p 8081:80, o cierre la aplicación que causa el conflicto.
  • permission denied ... docker.sock: en Linux, su usuario no está en el grupo docker; tras el comando usermod, cierre sesión y vuelva a iniciarla.
  • Cannot connect to the Docker daemon: Docker Desktop está cerrado o, en Linux, el servicio no está en marcha; inícielo con sudo systemctl start docker.
  • Aviso de arquitectura de imagen en Mac: algunas imágenes solo se publican para x86. Si es posible, elija una etiqueta compatible con ARM.

¿Qué aporta Docker a los proyectos web?

Docker hace que los entornos de desarrollo, pruebas y producción de un proyecto web sean idénticos. Ejecutar con contenedores un proyecto con PHP y base de datos, en lugar de usar paquetes de una sola máquina como la instalación de XAMPP, reduce las sorpresas por diferencias de versión. Para gestionar las dependencias de PHP dentro del contenedor, consulte también nuestra guía de instalación de Composer.

Los entornos reproducibles facilitan que las mejoras de velocidad y rendimiento den el mismo resultado también en producción. Esta coherencia es especialmente importante para las soluciones integradas, en las que varios sistemas funcionan juntos, y para una plataforma e-commerce en crecimiento.

Para otros contenidos sobre contenedores y servidores, puede echar un vistazo a nuestra página de la etiqueta docker.

Preguntas frecuentes

01¿Cuál es la diferencia entre Docker y una máquina virtual?

Una máquina virtual lleva su propio sistema operativo, ocupa gigabytes y arranca en minutos. Un contenedor, en cambio, comparte el núcleo de la máquina anfitriona, puede quedarse en megabytes y arranca en segundos; a cambio, su aislamiento no es tan fuerte como el de una máquina virtual.

02¿Se puede usar Docker en Windows sin Docker Desktop?

Sí. Puede instalar Docker Engine directamente en una distribución de Linux dentro de WSL 2. Este método ofrece flexibilidad en cuanto a licencias, pero se renuncia a comodidades como el panel visual y las actualizaciones automáticas.

03¿Se pierden mis datos al eliminar un contenedor?

Los datos escritos dentro del contenedor se pierden cuando este se elimina. Los datos que deban persistir, por ejemplo los archivos de la base de datos, móntelos fuera del contenedor con un volume o un bind mount; recuerde que el comando docker compose down -v también elimina los volumes.

04¿Se usa Docker en servidores de producción?

Sí, muchas aplicaciones funcionan en producción como contenedores. Sin embargo, en producción deben planificarse aparte las copias de seguridad, las actualizaciones, la supervisión de registros y los ajustes de seguridad; no basta con una copia exacta de la instalación de la máquina de desarrollo.

Cuando instala Docker y ejecuta el primer contenedor, pasa a un orden reproducible en el que puede levantar sus proyectos de la misma forma en cualquier equipo. Si desea para su empresa un software a medida, desarrollado en este orden y fácil de mantener, conozca las soluciones de software a medida de Aurora Yazılım o póngase en contacto con nosotros.