Curso
¿Quieres alojar MongoDB tú mismo o empezar a probarlo en un entorno local? Si no deseas empezar directamente con MongoDB Atlas, tienes varias opciones para dar los primeros pasos, una de ellas son los contenedores con Docker.
El uso de Docker es una opción sólida para gestionar tu instancia de MongoDB, ya que no lleva más de un minuto y es fácil de mantener y trasladar entre ordenadores host.
En este artículo, veremos algunos enfoques para implementar MongoDB con Docker y exploraremos algunos consejos y trucos a lo largo del camino.
Requisitos previos
Para seguir este tutorial, necesitarás tener instalado Docker Engine en tu ordenador. Esto podría ser en macOS, Windows o Linux. No es necesario instalar Docker Desktop explícitamente, pero puede facilitarte el uso de Docker dependiendo del sistema operativo que utilices.
Estoy utilizando Docker Engine a través de Rancher Desktop en macOS, por ejemplo, y funciona correctamente.
Para refrescar tus conocimientos sobre Docker, te recomendamos que eches un vistazo a Docker para principiantes: Guía práctica sobre contenedores para ponerte al día con los conceptos básicos.
Descarga de una imagen Docker de MongoDB
Antes de poder empezar a ejecutar MongoDB en un contenedor Docker, primero debes descargar una imagen que se adapte a tus necesidades. Desde la línea de comandos, ejecuta lo siguiente:
docker pull mongodb/mongodb-community-server:latest
El comando anterior descargará la imagen oficial de MongoDB Community Edition (CE) con la etiqueta «latest».
Es importante tener en cuenta que mongodb/mongodb-community-server y mongodb/mongodb-enterprise-server son imágenes oficiales de Docker mantenidas por MongoDB. Todas las demás imágenes son mantenidas por la comunidad externa y pueden darte resultados diferentes o inesperados.
Una vez descargada la imagen, podemos ver las opciones de implementación.
Ejecutar MongoDB como un contenedor aislado con el comando Docker Run
La forma más rápida de implementar MongoDB con Docker es simplemente utilizar el comando « docker run
» con unos pocos parámetros de configuración. Por ejemplo, puedes ejecutar lo siguiente desde la línea de comandos:
docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=nraboy -e MONGO_INITDB_ROOT_PASSWORD=password1234 --name mongodb mongodb/mongodb-community-server:latest
El comando anterior tomará nuestra imagen y la implementará como un contenedor denominado «MongoDB». El contenedor se asignará al puerto, lo que significa que el host podrá interactuar con él en el puerto «27017». La información de autenticación raíz también se configura en este ejemplo, pero dependiendo de tus necesidades de implementación, puedes utilizar Docker Secrets u otro método protegido para transmitir información confidencial.
En el ejemplo anterior, todos los datos se almacenan dentro del contenedor. Los datos de MongoDB, que incluyen bases de datos, colecciones e incluso documentos, solo se conservarán mientras exista ese contenedor en particular. Puede que sea adecuado para realizar pruebas, pero en muchas ocasiones querrás que los datos de MongoDB se mantengan de forma fiable en Docker. Para solucionarlo, debes crear un volumen Docker con el siguiente comando:
docker volume create mongodb
Para indicar al contenedor que utilice ese volumen, puedes cambiar el comando de implementación para que tenga un aspecto similar al siguiente:
docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=nraboy -e MONGO_INITDB_ROOT_PASSWORD=password1234 -v mongodb:/data/db --name mongodb mongodb/mongodb-community-server:latest
Observa que, en esta ocasión, estamos especificando el volumen que se va a utilizar. Cuando utilizas un volumen, puedes estar seguro de que tus datos seguirán existiendo incluso después de cerrar o actualizar tu contenedor.
Con MongoDB ejecutándose desde un contenedor Docker, puedes conectarte a él utilizando mongodb://nraboy:password1234@localhost:27017
como cadena de conexión desde la herramienta que prefieras.
Incluir MongoDB en tu pila o proyecto con Docker Compose
Si tienes pensado utilizar MongoDB con un proyecto concreto, también gestionado con Docker, probablemente tenga sentido gestionar MongoDB con una configuración de Docker Compose. Estas configuraciones se utilizan a menudo para crear entornos aislados para tus proyectos, lo que se conoce como «pilas».
Crea un archivo llamado « docker-compose.yml
» en cualquier lugar de tu ordenador con el siguiente contenido:
services:
mongodb:
image: mongodb/mongodb-community-server:latest
container_name: mongodb
restart: unless-stopped
ports:
- "27017:27017"
volumes:
- mongodb:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: nraboy
MONGO_INITDB_ROOT_PASSWORD: password1234
volumes:
mongodb:
external: true
La configuración anterior utiliza información que ya hemos visto en el comando de línea de comandos singular. Al igual que con el otro método, se espera que ya hayas creado un volumen mongodb
para que lo gestione Docker. Una vez más, si necesitas hacer esto, ejecuta el siguiente comando:
docker volume create mongodb
Por supuesto, puedes gestionar tus volúmenes de Docker como mejor te parezca. Crear un volumen es solo una de las muchas posibilidades.
Con la línea de comandos configurada en el mismo directorio de trabajo que el archivo docker-compose.yml
, ejecuta el siguiente comando:
docker compose up -d
El comando anterior inicia la pila en modo separado.
Puedes comprobar que todo funciona correctamente intentando conectarte a tu instancia con una herramienta como MongoDB Compass, uno de los controladores de lenguaje como Node.js o a través del terminal de MongoDB.
Si sigues el ejemplo al pie de la letra, tu cadena de conexión será mongodb://nraboy:password1234@localhost:27017
, pero dependiendo de cómo hayas seguido los pasos, podría ser diferente.
Para cerrar tu instancia de MongoDB, ejecuta lo siguiente desde la línea de comandos con tu configuración YAML en el mismo directorio de trabajo:
docker compose down
Como estamos utilizando un volumen externo, la próxima vez que inicies el contenedor, todo seguirá intacto.
Conclusión
Docker facilita el trabajo con MongoDB en un entorno autohospedado o local. No tienes que preocuparte por las configuraciones generales del sistema operativo ni por la experiencia que tendrás al pasar de un ordenador a otro. Disfrutarás de una experiencia consistente en todo momento.
Para dar un paso más, vale la pena aprender a crear una base de datos en MongoDB.
Conviértete en Ingeniero de Datos
Preguntas frecuentes
¿Puedo ejecutar varios contenedores MongoDB al mismo tiempo con Docker?
Sí, puedes ejecutar varios contenedores MongoDB siempre que cada uno se asigne a un puerto diferente o se ejecute en una red Docker independiente para evitar conflictos.
¿Cómo puedo hacer una copia de seguridad de los datos de un contenedor MongoDB en Docker?
Para hacer una copia de seguridad de los datos, puedes utilizar docker cp
para extraer archivos del volumen o utilizar mongodump
dentro del contenedor. Los volúmenes persistentes también ayudan a mantener los datos entre sesiones.
¿Es seguro almacenar contraseñas de MongoDB en el archivo Docker Compose?
No es lo ideal. En su lugar, utiliza Docker Secrets o archivos de variables de entorno (.env
) que se excluyen del control de versiones para gestionar de forma segura las credenciales confidenciales.
¿Funciona bien MongoDB en Docker en Windows?
Sí, MongoDB funciona correctamente en Docker en Windows, macOS y Linux, especialmente cuando se utiliza WSL 2 o Docker Desktop para Windows para garantizar la compatibilidad.
¿Puedo usar MongoDB con Docker en producción?
Sí, pero se recomienda configurar correctamente la red, los volúmenes de almacenamiento, la autenticación y las copias de seguridad antes de utilizar MongoDB en Docker en un entorno de producción.
¿Cómo me conecto a MongoDB en Docker desde otro contenedor?
Utiliza Docker Compose y haz referencia al contenedor MongoDB por su nombre de servicio como nombre de host. Esto permite la comunicación entre servicios en la misma red.
¿Necesito instalar MongoDB localmente si utilizas Docker?
No. Docker ejecuta MongoDB en un entorno contenedorizado, por lo que no es necesario instalar MongoDB directamente en tu máquina host.
¿Puedo usar MongoDB Compass con una instancia de MongoDB en Docker?
Por supuesto. Solo tienes que utilizar la cadena de conexión correcta (por ejemplo, mongodb://user:pass@localhost:27017
) para conectarte desde MongoDB Compass a tu contenedor local.
¿Cómo puedo supervisar el rendimiento de MongoDB en Docker?
Puedes integrar herramientas como mongostat
, mongotop
o soluciones de monitorización externas como Prometheus y Grafana para realizar un seguimiento del rendimiento dentro de Docker.
¿Se conservarán mis datos de MongoDB en un contenedor Docker?
Siempre que hayas elegido asignar el directorio del contenedor a un volumen del ordenador host, los datos deberían conservarse sin problemas entre actualizaciones e inicios.
¿Debería usar Docker o MongoDB Atlas?
En la mayoría de los casos, es mejor utilizar MongoDB Atlas debido a sus características, precio y facilidad de uso, pero MongoDB a través de Docker también es una opción válida.
¿Tengo que usar Docker Desktop con MongoDB?
Docker Desktop facilita el trabajo con Docker en la mayoría de los casos, pero no es un requisito imprescindible. La mayoría de las distribuciones de Linux incluyen Docker Engine, y otras interfaces como Rancher Desktop también funcionan.

Nic Raboy es Jefe de Relaciones con Desarrolladores en MongoDB, donde dirige un equipo de programadores de Python, Java, C# y PHP que crean contenido impresionante para ayudar a los programadores a incluir con éxito MongoDB en sus proyectos. Tiene experiencia con Golang y JavaScript y escribe a menudo sobre muchas de sus aventuras de desarrollo.