Ir al contenido principal

MinIO Docker: Guía de configuración para almacenamiento de objetos compatible con S3

Ejecuta MinIO con Docker para obtener almacenamiento de objetos compatible con S3 para el desarrollo local, incluyendo la configuración, los volúmenes persistentes, la resolución de problemas y cuándo utilizar el modo distribuido.
Actualizado 29 ene 2026  · 15 min leer

¿Necesitas almacenamiento de objetos para el desarrollo, pero no quieres configurar y pagar por AWS S3?

MinIO te ofrece almacenamiento compatible con S3 que funciona en cualquier lugar: en tu ordenador portátil, en una máquina virtual o en un clúster de Kubernetes. Es de código abierto, lo que significa que es independiente del proveedor y no recibirás facturas sorpresa a final de mes. Y, en combinación con Docker, ejecutar MinIO es aún más fácil, ya que puedes poner en marcha un servidor de almacenamiento en cuestión de segundos sin necesidad de instalar nada directamente en tu equipo.

Los contenedores Docker mantienen MinIO aislado de tu sistema y, al mismo tiempo, te brindan un control total sobre la configuración y la persistencia de los datos. Puedes probar las API de S3 localmente, simular configuraciones de almacenamiento de producción o ejecutar un almacenamiento de objetos ligero para proyectos pequeños.

En este artículo, te mostraré cómo ejecutar MinIO con Docker, verificar que funciona correctamente y configurar las opciones de configuración más comunes.

Si eres completamente nuevo en Docker, dedica una tarde de sábado a dominar los fundamentos: Introducción a Docker de DataCamp. Introducción a Docker te lo explica todo.

Requisitos previos

Necesitas tres cosas para ejecutar MinIO con Docker.

Docker instalado y ejecutando en tu máquina. Puedes verificarlo ejecutando « docker --version » en tu terminal. Si obtienes un número de versión, ya estás listo para continuar.

Conocimientos básicos de los comandos de Docker. Debes saber cómo iniciar y detener contenedores, ver registros y trabajar con imágenes de Docker. Si has ejecutado docker run o has trabajado con Docker Compose antes, no tendrás ningún problema.

Un directorio local para el almacenamiento persistente. MinIO necesita un lugar donde almacenar tus datos fuera del contenedor. Crea un directorio vacío en tu máquina host; algo como ~/minio/data funciona bien.

Eso es todo. La lista es breve y sencilla, pero asegúrate de marcar todas las casillas antes de continuar.

Cómo ejecutar MinIO con Docker (configuración de un solo nodo)

Una configuración MinIO de un solo nodo ejecuta una instancia de MinIO en un contenedor Docker y almacena todos tus datos en una única ubicación.

Esta configuración funciona para tareas de desarrollo, pruebas y producción a pequeña escala en las que no se necesita alta disponibilidad ni almacenamiento distribuido. Obtienes compatibilidad total con la API de S3 sin la complejidad que supone ejecutar varios nodos.

Ejecutar MinIO con Docker Run

El comando ` docker run ` inicia MinIO en un nuevo contenedor con todo configurado en una sola línea.

Este es el comando básico:

docker run -p 9000:9000 -p 9001:9001 \
  --name minio \
  -v ~/minio/data:/data \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=password123" \
  quay.io/minio/minio server /data --console-address ":9001"

Imagen 1: Ejecución de MinIO con docker run

Ejecutar MinIO con docker run

Analicemos qué hace cada parte.

  • El puerto 9000 es el punto final de la API al que se conectan tus aplicaciones para cargar y descargar archivos. Aquí es donde los clientes compatibles con S3 envían sus solicitudes.

  • El puerto 9001 aloja la consola web desde la que gestionas los depósitos, configuras los permisos y supervisas el almacenamiento. Lo utilizarás para verificar que MinIO se está ejecutando correctamente.

  • La bandera ` -v ~/minio/data:/data ` asigna tu directorio local a la ubicación de almacenamiento del contenedor. Todo lo que MinIO almacena se guarda en un directorio de datos ( ~/minio/data ) en tu máquina host. Cuando detienes o eliminas el contenedor, tus datos permanecen seguros en este directorio.

  • Las variables de entorno establecen tus credenciales de acceso. MINIO_ROOT_USER es tu nombre de usuario de administrador y MINIO_ROOT_PASSWORD es la contraseña. Estas son las credenciales que utilizarás para iniciar sesión en la consola web y configurar el acceso a la API.

  • El argumento ` server /data ` indica a MinIO que se ejecute en modo servidor y utilice ` /data ` como directorio de almacenamiento. La bandera ` --console-address ":9001" ` especifica en qué puerto escucha la consola web.

Existe una forma alternativa de ejecutar MinIO que es ideal si no te gustan los comandos largos y de varias líneas en la terminal.

Nota: MinIO ya no actualiza sus imágenes de Docker Hub y Quay (a partir de octubre de 2025). El código de este artículo sigue funcionando para el desarrollo local, pero para su uso en producción, considera alternativas mantenidas como la imagen MinIO de Chainguard (cgr.dev/chainguard/minio:latest).

Ejecutar MinIO con Docker Compose

Docker Compose te permite definir tu configuración de MinIO en un archivo YAML en lugar de escribir largos comandos.

Esto hace que tu configuración sea repetible y esté controlada por versiones. Puedes compartir el archivo con tu equipo, enviarlo a git y reiniciar MinIO con la misma configuración cada vez.

Crea un archivo docker-compose.yml:

services:
  minio:
    image: quay.io/minio/minio
    container_name: minio
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: password123
    volumes:
      - ./minio/data:/data
    command: server /data --console-address ":9001"

La estructura refleja el comando docker run, pero organiza todo en secciones con nombre. Los puertos, las variables de entorno y los volúmenes tienen cada uno su propio bloque.

El mapeo de volúmenes funciona de la misma manera: ./minio/data:/data crea un directorio en tu carpeta actual y lo monta en el contenedor. ./ significa relativo a la ubicación del archivo docker-compose.yml.

Ahora puedes iniciar MinIO con:

docker-compose up -d

Imagen 2: Ejecución de MinIO con Docker Compose

Ejecutar MinIO con Docker Compose

La bandera ` -d ` ejecuta el contenedor en segundo plano. Tu terminal no quedará bloqueada por los registros de MinIO y el contenedor seguirá funcionando después de cerrar la terminal.

Deja de:

docker-compose down

Compose es mejor para el desarrollo porque puedes añadir comprobaciones de estado, políticas de reinicio y múltiples servicios en el mismo archivo. Si más adelante necesitas añadir una base de datos u otros servicios junto con MinIO, solo tienes que añadir más entradas en services:.

Cómo acceder y verificar que MinIO se está ejecutando

Ahora que MinIO está en funcionamiento, querrás confirmar que se ha iniciado correctamente antes de poder utilizarlo para el almacenamiento.

Hay dos formas de verificar tu configuración: la consola web para la confirmación visual y el cliente MinIO para la verificación desde la línea de comandos.

Uso de la consola web de MinIO

Abre tu navegador y ve a http://localhost:9001.

Aparecerá una pantalla de inicio de sesión en la que se te solicitarán tus credenciales:

Imagen 3: interfaz de usuario web de MinIO

Interfaz de usuario web de MinIO

Puedes iniciar sesión con las credenciales que proporcionaste como variables de entorno: admin/password123 en mi caso.

Después de iniciar sesión, accederás al panel de control de MinIO. La página principal muestra el uso del almacenamiento, el número de buckets y el estado del sistema. La barra lateral izquierda tiene opciones para crear cubos, administrar usuarios y ver métricas.

Imagen 4: Creación de un depósito a través de la interfaz de usuario web de MinIO.

Creación de un depósito a través de la interfaz de usuario web de MinIO

Crea un cubo de prueba para verificar que todo funciona correctamente. Haz clic en «Cubos» en la barra lateral y, a continuación, en «Crear cubo». Ponle un nombre como « test-bucket » y haz clic en «Crear». Si el bucket aparece en tu lista, MinIO se está ejecutando correctamente y almacenando datos.

Imagen 5: Creación de un depósito a través de la interfaz de usuario web de MinIO.

Creación de un depósito a través de la interfaz de usuario web de MinIO

Uso del cliente MinIO (mc)

El cliente MinIO es una herramienta de línea de comandos que te permite interactuar con MinIO como lo harías con la CLI de AWS.

Ejecuta uno de estos comandos para instalarlo:

# macOS
brew install minio/stable/mc

# Linux
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/

Ahora ejecuta este comando para conectar el cliente a tu instancia local de MinIO:

mc alias set local http://localhost:9000 admin password123

Esto crea un alias llamado local que apunta a tu servidor MinIO. Ahora puedes ejecutar comandos en él.

Enumera tus cubos:

mc ls local

Imagen 6: Lista de cubos

Listado de cubos

Si creaste el depósito de prueba anteriormente, lo verás en el resultado. Si el comando devuelve un resultado vacío o muestra tus buckets, MinIO está funcionando.

Ahora puedes subir un archivo de prueba al depósito:

echo "test" > test.txt
mc cp test.txt local/test-bucket/

Y luego verifica que esté ahí:

mc ls local/test-bucket

Si ves « test.txt » en la salida, significa que lo has configurado todo correctamente.

Imagen 7: Listado de archivos en un bucket

Listado de archivos en un bucket

Aquí tienes algunas soluciones rápidas soluciones si algo no funciona:

  • Comprueba si el contenedor está en funcionamiento con docker ps. Si no ves un contenedor llamado minio, significa que no se ha iniciado o se ha bloqueado.

  • Visualiza los registros con docker logs minio. Busca errores relacionados con puertos que ya están en uso o problemas de permisos en el directorio de datos.

  • Si no puedes acceder a la consola web, comprueba que los puertos no estén bloqueados en docker port minio. Deberías ver que tanto 9000 como 9001 están asignados correctamente.

  • Si encuentras errores de permiso en el directorio de datos, ejecuta chmod -R 755 ~/minio/data para solucionar los problemas de acceso.

Almacenamiento persistente y volúmenes de datos

Los contenedores son efímeros por defecto: cuando eliminas un contenedor, todo lo que hay dentro desaparece.

MinIO almacena objetos, metadatos y archivos de configuración. Si no configuras correctamente el almacenamiento persistente, perderás todos tus datos en el momento en que reinicies o elimines el contenedor.

Uso de volúmenes locales con Docker

Los volúmenes y los montajes vinculados de Docker mantienen tus datos seguros fuera del contenedor.

Cuando utilizas -v ~/minio/data:/data o asignas un volumen en Docker Compose, MinIO escribe todo en tu máquina host. El contenedor lee y escribe archivos en /data, pero esos archivos se encuentran realmente en ~/minio/data en tu host.

Cuando detienes el contenedor, lo eliminas o incluso borras la imagen, tus datos permanecen en ~/minio/data. Inicia un nuevo contenedor MinIO que apunte al mismo directorio y todos tus buckets, objetos y configuraciones volverán a estar exactamente como los dejaste.

Si no asignas un volumen, MinIO utiliza el sistema de archivos interno del contenedor. Todo funciona bien hasta que detienes el contenedor. Cuando lo reinicias, MinIO se inicia desde cero, sin buckets, sin objetos y sin configuración.

El ejemplo de compose que he mostrado anteriormente crea una carpeta minio/data justo donde se encuentra tu archivo compose:

Imagen 8: carpeta de datos de MinIO

Carpeta de datos de MinIO

Errores comunes en el almacenamiento

Correr sin volumen es el error más común.

Inicias MinIO, subes archivos, creas buckets y todo parece funcionar correctamente. A continuación, reinicia el contenedor para realizar una actualización o un cambio de configuración. Todos tus datos se han perdido porque estaban almacenados dentro del contenedor, no en tu host.

Comprueba siempre si tu comando Docker o archivo Compose tiene una asignación de volumen antes de introducir datos reales en MinIO.

Problemas de permisos surgen cuando Docker no puede escribir en tu directorio montado.

El proceso MinIO dentro del contenedor se ejecuta como un usuario específico. Si ese usuario no tiene permisos de escritura en el directorio host, MinIO se bloquea al iniciarse o falla silenciosamente al intentar almacenar objetos.

Puedes solucionar esto asegurándote de que tu directorio de datos sea escribible:

chmod -R 755 ~/minio/data

O ejecuta el contenedor con un usuario que coincida con tu usuario host:

docker run --user $(id -u):$(id -g) ...

En resumen, configura tus volúmenes correctamente una vez y no tendrás que preocuparte por perder datos.

Variables de entorno y configuración básica

MinIO lee su configuración a partir de variables de entorno cuando se inicia.

Esto significa que puedes cambiar el comportamiento de MinIO sin necesidad de editar archivos de configuración ni reconstruir contenedores. Estas variables se configuran en el comando ` docker run ` o en el archivo Docker Compose.

Claves de acceso y credenciales

MinIO requiere dos variables de entorno para la autenticación: MINIO_ROOT_USER y MINIO_ROOT_PASSWORD.

Esto crea la cuenta de administrador raíz que tiene control total sobre tu instancia de MinIO. El usuario root puede crear buckets, gestionar otros usuarios, establecer políticas y acceder a todos los objetos almacenados.

Configúralos así en docker run:

-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=your-secure-password"

O en Docker Compose:

environment:
  MINIO_ROOT_USER: admin
  MINIO_ROOT_PASSWORD: your-secure-password

No utilices credenciales predeterminadas en producción. Los ejemplos de este artículo utilizan admin y password123 por simplicidad, pero estas son opciones terribles para implementaciones reales.

Elige una contraseña segura con al menos 8 caracteres. Mejor aún, utiliza credenciales generadas aleatoriamente y guárdalas en un gestor de contraseñas o en un sistema de gestión de secretos.

No codifiques las credenciales en los archivos Docker Compose antes de enviarlos al control de versiones. Utiliza archivos de entorno en su lugar:

environment:
  MINIO_ROOT_USER: ${MINIO_ROOT_USER}
  MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}

A continuación, crea un archivo .env con tus credenciales reales y añádelo a .gitignore.

Configuración de puertos y redes

MinIO necesita dos puertos para funcionar correctamente.

  • El puerto 9000 gestiona la API de S3. Aquí es donde tus aplicaciones envían solicitudes para almacenar y recuperar objetos. Todos los clientes compatibles con S3 se conectan a este puerto.
  • El puerto 9001 da servicio a la consola web. Esta es la interfaz del navegador desde la que gestionas MinIO a través de una interfaz gráfica de usuario.

Asigna estos puertos en tu comando Docker:

-p 9000:9000 -p 9001:9001

Los conflictos de puertos se producen cuando otro servicio ya utiliza el 9000 o el 9001 en tu host.

Al iniciar el contenedor, aparecerá un error del tipo «bind: dirección ya en uso». Soluciona esto asignando diferentes puertos de host:

-p 9090:9000 -p 9091:9001

Ahora, la API de MinIO se encuentra en http://localhost:9090 y la consola en http://localhost:9091. El contenedor sigue utilizando 9000 y 9001 internamente, pero externamente se accede a ellos a través de puertos diferentes.

Estos comandos te ayudarán a comprobar qué está utilizando un puerto antes de iniciar MinIO:

# Linux/macOS
lsof -i :9000
lsof -i :9001

# Windows
netstat -ano | findstr :9000
netstat -ano | findstr :9001

Comprobar qué está utilizando un puerto

Si estás ejecutando varias instancias de MinIO en la misma máquina, asigna a cada una de ellas puertos únicos para que no entren en conflicto entre sí.

Ejecutar MinIO en modo distribuido con Docker

El modo distribuido ejecuta MinIO en varios servidores con múltiples unidades para garantizar una alta disponibilidad y redundancia de datos.

No necesitas esto para el desarrollo ni para las pruebas. El modo de nodo único gestiona perfectamente la mayoría de los casos de uso. Omite esta sección a menos que estés planificando una implementación de producción que deba permanecer en línea incluso cuando los servidores fallen.

Cuándo tiene sentido distribuir MinIO

Utiliza el modo distribuido cuando necesites tolerancia a fallos.

Si un servidor deja de funcionar en una configuración distribuida, MinIO sigue funcionando y tus datos siguen estando accesibles. El sistema utiliza codificación de borrado para dividir los objetos entre varias unidades y servidores, de modo que puedes perder unidades o nodos completos sin perder datos.

También necesitas el modo distribuido para el almacenamiento a gran escala. Si almacenas terabytes o petabytes de datos, distribuirlos entre varias máquinas te proporcionará un mejor rendimiento y más capacidad que la que puede ofrecer un único servidor.

El desarrollo local no necesita nada de esto. El modo distribuido añade complejidad: necesitas varias máquinas o máquinas virtuales, una red coordinada y una configuración cuidadosa de las unidades. Para probar las API de S3 o ejecutar el almacenamiento de objetos en tu ordenador portátil, el modo de nodo único hace todo lo que necesitas.

Los entornos de producción utilizan el modo distribuido cuando el tiempo de inactividad no es aceptable y la pérdida de datos sería catastrófica. Pensad en sistemas de copia de seguridad, lagos de datos o aplicaciones en las que los usuarios dependen de la disponibilidad constante del almacenamiento.

Descripción general de la configuración de alto nivel

MinIO distribuido requiere al menos cuatro unidades en varios nodos.

Cada nodo ejecuta un contenedor MinIO, y todos los nodos deben ver la misma configuración de unidad. No puedes mezclar nodos de una sola unidad con nodos de varias unidades ni cambiar el número de unidades después de la configuración.

Una configuración distribuida básica tiene el siguiente aspecto:

  • Cuatro servidores (o máquinas virtuales) con MinIO instalado.
  • Varias unidades en cada servidor dedicado a MinIO.
  • Conectividad de red entre todos los nodos
  • Rutas de unidad idénticas en todos los nodos

Puedes gestionar la coordinación en un único archivo Compose, pero te aviso: será muy largo. Debes definir todos los nodos, configurar sus rutas de unidad e iniciarlos juntos.

Aquí tienes un ejemplo completo para cuatro nodos con dos unidades cada uno:

version: "3.9"

services:
  minio1:
    image: quay.io/minio/minio:latest
    hostname: minio1
    container_name: minio1
    command: server http://minio{1...4}/data{1...2} --console-address ":9001"
    ports:
      - "9001:9000"
      - "9091:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: password123
    volumes:
      - ./data/minio1/data1:/data1
      - ./data/minio1/data2:/data2
    networks:
      - minio

  minio2:
    image: quay.io/minio/minio:latest
    hostname: minio2
    container_name: minio2
    command: server http://minio{1...4}/data{1...2} --console-address ":9001"
    ports:
      - "9002:9000"
      - "9092:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: password123
    volumes:
      - ./data/minio2/data1:/data1
      - ./data/minio2/data2:/data2
    networks:
      - minio

  minio3:
    image: quay.io/minio/minio:latest
    hostname: minio3
    container_name: minio3
    command: server http://minio{1...4}/data{1...2} --console-address ":9001"
    ports:
      - "9003:9000"
      - "9093:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: password123
    volumes:
      - ./data/minio3/data1:/data1
      - ./data/minio3/data2:/data2
    networks:
      - minio

  minio4:
    image: quay.io/minio/minio:latest
    hostname: minio4
    container_name: minio4
    command: server http://minio{1...4}/data{1...2} --console-address ":9001"
    ports:
      - "9004:9000"
      - "9094:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: password123
    volumes:
      - ./data/minio4/data1:/data1
      - ./data/minio4/data2:/data2
    networks:
      - minio

networks:
  minio:
    driver: bridge

La sintaxis ` {1...4} ` indica a MinIO que se conecte a cuatro nodos (minio1 a minio4) con dos unidades cada uno (data1 y data2). Cada nodo obtiene asignaciones de puertos únicas para que puedas acceder a ellos individualmente: el nodo 1 utiliza 9001/9091, el nodo 2 utiliza 9002/9092, y así sucesivamente.

La red de nombre de host ( minio-distributed ) permite que los contenedores se comuniquen entre sí mediante el nombre de host. Todos los nodos deben utilizar las mismas credenciales y ver la misma disposición de unidades.

Para iniciar el clúster, primero crea los directorios de datos y, a continuación, ejecuta el archivo compose.

mkdir -p data/minio{1..4}/data{1..2}
docker compose up -d

Imagen 10: Ejecución de MinIO en modo distribuido

Ejecutar MinIO en modo distribuido

¡Eso es todo! Ahora puedes visitar cualquiera de las siguientes URL para acceder a la interfaz de usuario web:

Pero, de nuevo, no lo construyas a menos que realmente lo necesites: el modo distribuido es para cargas de trabajo de producción en las que el tiempo de actividad y la redundancia justifican la complejidad adicional.

Además, es probable que quieras cosas como TLS, un único punto final de consola y volúmenes/discos externos para un entorno de producción completo.

Problemas comunes al ejecutar MinIO en Docker

La mayoría de los problemas de MinIO Docker se deben a una configuración incorrecta de los volúmenes, los puertos o las credenciales.

Estos son los problemas con los que te encontrarás y cómo solucionarlos rápidamente.

El contenedor se inicia, pero no se puede acceder a la interfaz de usuario web.

Ejecutas docker ps y ves que el contenedor se está ejecutando, pero http://localhost:9001 no devuelve ningún resultado o agota el tiempo de espera.

Para solucionar esto, primero comprueba si el puerto de la consola está asignado correctamente:

docker port minio

Deberías visitar 9001/tcp -> 0.0.0.0:9001. Si no ves el puerto 9001 en la lista, es porque te has olvidado de asignarlo en tu comandodocker run o en el archivo Compose.

Comprueba también los registros de MinIO:

docker logs minio

Busca la línea que dice «Console: http://...»: ahí se indica la dirección en la que MinIO está realmente a la escucha. Si ves un puerto diferente al esperado, es posible que tu indicador --console-address sea incorrecto.

Errores de permiso en volúmenes montados

MinIO se bloquea al iniciarse o aparece el error «permiso denegado» en los registros cuando intenta escribir en /data.

El proceso MinIO se ejecuta como un usuario específico dentro del contenedor, y ese usuario necesita acceso de escritura al directorio montado. Soluciona esto con:

chmod -R 755 ~/minio/data

O si utilizas Linux, ejecuta el contenedor con tu ID de usuario:

docker run --user $(id -u):$(id -g) ...

Conflictos de puertos con otros servicios

Al iniciar el contenedor, aparece el mensaje «bind: dirección ya en uso».

Esto significa que otro servicio ya está utilizando el puerto 9000 o 9001. Averigua qué lo está utilizando:

# Linux/macOS
lsof -i :9000
lsof -i :9001

# Windows
netstat -ano | findstr :9000

A continuación, asigna MinIO a diferentes puertos de host:

docker run -p 9090:9000 -p 9091:9001 ...

Ahora accede a la API en localhost:9090 y a la consola en localhost:9091.

Las credenciales no funcionan como se esperaba.

Has configurado MINIO_ROOT_USER y MINIO_ROOT_PASSWORD, pero no puedes iniciar sesión o el contenedor no se inicia.

Para resolverlo, comprueba si realmente has pasado las variables de entorno:

docker inspect minio | grep -A 5 Env

Busca « MINIO_ROOT_USER » y « MINIO_ROOT_PASSWORD » en el resultado. Si no aparecen, es porque has olvidado las banderas -e o la sección environment: en tu archivo Compose.

MinIO también requiere que las contraseñas tengan al menos 8 caracteres. Si tu contraseña es más corta, es posible que el contenedor la rechace o utilice una contraseña predeterminada en su lugar.

Si has cambiado las credenciales en una configuración existente, detén y elimina el contenedor por completo, y luego comienza de nuevo:

docker stop minio
docker rm minio
docker run ...  # with new credentials

Es posible que los archivos de credenciales antiguos permanezcan en tu directorio de datos y provoquen conflictos.

Prácticas recomendadas para ejecutar MinIO con Docker

Sigue estas prácticas para evitar errores comunes y mantener tu configuración de MinIO en buen estado.

  • Utiliza Docker Compose para garantizar la repetibilidad. Un archivo Compose documenta tu configuración exacta: puertos, volúmenes, variables de entorno y comandos. Puedes controlar las versiones, compartirlo con tu equipo y recrear configuraciones idénticas en diferentes máquinas. Ejecutar comandos largos docker run desde el historial de tu terminal provoca desviaciones en la configuración y errores.

  • Configura siempre el almacenamiento persistente. Asigna una unidad o monta un enlace antes de almacenar datos reales. Los contenedores son efímeros: si omites este paso, perderás todo cuando se reinicie el contenedor. Comprueba tu configuración con docker inspect minio y verifica que la asignación de volumen sea correcta.

  • Mantén tus credenciales fuera del historial de comandos. No incluyas contraseñas directamente en los comandos de docker run ni las guardes en git en tus archivos Compose. Utiliza archivos de entorno (.env) con Docker Compose o pasa las credenciales a través de variables de entorno en tiempo de ejecución. Añade .env a tu .gitignore inmediatamente.

  • Utiliza el modo de nodo único solo para el desarrollo. El modo distribuido es complejo y lento de configurar. No necesitas alta disponibilidad ni codificación de borrado en tu ordenador portátil. Guarda las implementaciones distribuidas para la producción, donde el tiempo de inactividad realmente importa.

  • Supervisa los registros durante el inicio. Ejecuta docker logs -f minio cuando inicies MinIO por primera vez. Los registros muestran el punto final de la API, la URL de la consola y cualquier error de configuración. Si algo va mal, lo verás inmediatamente en lugar de preguntarte por qué nada funciona.

Sigue estas prácticas y tu configuración de MinIO será sólida desde el primer día.

Conclusión

Ejecutar MinIO con Docker significa que puedes tener un almacenamiento de objetos compatible con S3 funcionando en tu máquina en menos de un minuto.

Para el desarrollo, las pruebas y los proyectos a pequeña escala, MinIO de un solo nodo en Docker te ofrece todo lo que necesitas. Obtienes compatibilidad total con la API de S3, una consola web para la gestión y control total sobre tus datos sin depender de servicios en la nube ni pagar por almacenamiento que no utilizas.

Empieza por lo básico: un simple comando « docker run » o un archivo Docker Compose con volúmenes persistentes y credenciales seguras (prefiere esta última opción). Prueba tu configuración, comprueba que funciona y solo añade complejidad cuando realmente lo necesites.

El modo distribuido, la alta disponibilidad y las configuraciones de nivel de producción existen por una razón, pero esa razón no es el desarrollo local. Pasa a esas configuraciones cuando realices implementaciones en producción, cuando el tiempo de inactividad te suponga un coste económico o cuando almacenes datos que no se pueden perder. Hasta entonces, mantén la sencillez y céntrate en desarrollar tu aplicación en lugar de gestionar la infraestructura.

Cuando estés listo para profundizar en temas más complejos relacionados con Docker, consulta nuestra Contenedorización y virtualización con Docker y Kubernetes .

Domina Docker y Kubernetes

Aprende el poder de Docker y Kubernetes con una pista interactiva para construir y desplegar aplicaciones en entornos modernos.
Empezar pista gratis

Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Científico de Datos Senior con base en Croacia. Top Tech Writer con más de 700 artículos publicados, generando más de 10M de visitas. Autor del libro Automatización del aprendizaje automático con TPOT.

Preguntas frecuentes

¿Cómo puedes optimizar el rendimiento de MinIO para cargas con alta concurrencia?

Aumenta el número de conexiones simultáneas que puede gestionar tu servidor MinIO ajustando la variable de entorno ` MINIO_API_REQUESTS_MAX `. Para cargas de trabajo de alta concurrencia, considera también la posibilidad de utilizar varias unidades en tu configuración, ya que MinIO distribuye la carga entre las unidades disponibles automáticamente. Si estás ejecutando el modo distribuido, asegúrate de que el ancho de banda de tu red entre nodos pueda manejar el tráfico y utiliza interfaces de red dedicadas para la comunicación MinIO.

¿Cuáles son las mejores prácticas para configurar MinIO con Docker Compose?

Utiliza siempre Docker Compose en lugar de los comandos docker run para configuraciones similares a las de producción, ya que permite que tu configuración sea repetible y esté controlada por versiones. Almacena las credenciales en un archivo independiente .env y añádelo a .gitignore para mantener los secretos fuera de tu repositorio. Asigna volúmenes persistentes a directorios dedicados en tu host, configura las políticas de reinicio en unless-stopped o always e incluye configuraciones de comprobación de estado para supervisar el estado de los contenedores.

¿Cómo se configura MinIO para un acceso seguro mediante TLS?

Genera certificados TLS y colócalos en un directorio de tu host, luego monta ese directorio en /root/.minio/certs dentro del contenedor MinIO. MinIO detecta automáticamente los certificados en esta ubicación y habilita HTTPS al iniciarse. Necesitarás un archivo public.crt para el certificado y un archivo private.key para la clave privada, y el certificado debe coincidir con el nombre de host o la dirección IP de tu servidor MinIO.

¿Cuáles son las principales diferencias entre MinIO y otras alternativas compatibles con S3?

MinIO es totalmente de código abierto y está diseñado específicamente para el almacenamiento de objetos de alto rendimiento, mientras que muchas alternativas compatibles con S3 son servicios en la nube o tienen conjuntos de funciones limitados. MinIO admite funciones como codificación de borrado distribuida, control de versiones, cifrado y políticas de ciclo de vida que coinciden con las capacidades de AWS S3. A diferencia de otras alternativas, MinIO funciona en cualquier lugar (en hardware físico, máquinas virtuales, contenedores o Kubernetes) y no te ata a un proveedor de nube específico.

¿Cómo puedes automatizar los procesos de copia de seguridad y restauración de MinIO?

Utiliza el cliente MinIO (mc) para crear scripts que reflejen los buckets en otra instancia de MinIO o en un almacenamiento compatible con S3 con mc mirror source/ destination/. Programa estos scripts con tareas cron o utiliza la función de replicación de buckets integrada en MinIO para sincronizar automáticamente los datos entre instancias de MinIO. Para las restauraciones, utiliza mc mirror a la inversa para copiar los datos desde tu ubicación de copia de seguridad, o utiliza mc cp con el indicador --recursive para restaurar buckets u objetos específicos.

Temas

Aprende Docker con DataCamp

programa

Contenedores y virtualización con Docker y Kubernetes

13 h
Aprende el poder de Docker y Kubernetes, esta pista interactiva te permitirá construir y desplegar aplicaciones en entornos modernos.
Ver detallesRight Arrow
Iniciar curso
Ver másRight Arrow
Relacionado

Tutorial

Cómo instalar y configurar MySQL en Docker

Aprende a instalar y configurar la base de datos MySQL dentro de contenedores Docker. El tutorial incluye conceptos como conectarse a servidores MySQL, ejecutar clientes MySQL para conectarse a contenedores, etc.
Bex Tuychiev's photo

Bex Tuychiev

Tutorial

Cuentas de almacenamiento Azure: Tutorial paso a paso para principiantes

Esta guía te enseña a configurar y gestionar las Cuentas de Almacenamiento de Azure, paso a paso. También explora opciones avanzadas de configuración para un rendimiento óptimo y una optimización de costes.
Anneleen Rummens's photo

Anneleen Rummens

Tutorial

Primeros pasos con AWS Athena: Guía práctica para principiantes

Esta guía práctica te ayudará a empezar a utilizar AWS Athena. Explora su arquitectura y características y aprende a consultar datos en Amazon S3 utilizando SQL.
Tim Lu's photo

Tim Lu

Tutorial

Base de datos Azure SQL: Configuración y gestión paso a paso

Aprende a crear, conectar, gestionar, consultar y proteger tu base de datos Azure SQL. Esta guía paso a paso cubre todo lo esencial para una configuración óptima de la base de datos.
Anneleen Rummens's photo

Anneleen Rummens

Tutorial

Guía de torchchat de PyTorch: Configuración local con Python

Aprende a configurar el torchat de PyTorch localmente con Python en este tutorial práctico, que proporciona orientación paso a paso y ejemplos.

Tutorial

Guía de modelado de datos de MongoDB para aplicaciones de blogs

Aprende algunas posibilidades de modelado de datos que incluyen documentos anidados al diseñar un sistema de gestión de contenidos (CMS) o una aplicación de blog.
Nic Raboy's photo

Nic Raboy

Ver másVer más