MongoDB es una base de datos de documentos popular y de código abierto que ofrece un alto rendimiento y gran flexibilidad. Pero ¿has intentado contenerizar una base de datos MongoDB para tus proyectos? Si no lo has hecho, ¡entonces estás a punto de llevarte una sorpresa!
En este tutorial, aprenderás cómo implementar, asegurar y gestionar MongoDB de manera efectiva con Docker. Así que sigue leyendo y conviértete en tu propio maestro en implementar contenedores de MongoDB con Docker!
Requisitos previos
Este tutorial incluye demostraciones prácticas. Para seguirlo, asegúrate de tener lo siguiente:
- Una máquina Ubuntu – Este tutorial utiliza Ubuntu 20.04 LTS
- A user with
sudo
permission - Docker – Este tutorial utiliza Docker 20.10.9
Descargando la imagen de Docker MongoDB
Antes de poder implementar y gestionar un contenedor de Docker MongoDB, primero debes descargar una imagen de MongoDB desde Docker Hub para poder ejecutar el contenedor MongoDB localmente.
Ejecute el comando docker
a continuación para descargar la imagen de la Edición Comunitaria (CE) de MongoDB (pull mongo
), que aloja Docker Hub. La versión más reciente de esta imagen en el momento de la redacción es 4.2.
Como puede ver a continuación, el comando automáticamente descarga la última versión de la imagen y la etiqueta como latest.

Ahora ejecute el comando docker images
a continuación para listar todas las imágenes disponibles en su servidor.
A continuación, puede ver la imagen de MongoDB etiquetada como latest.

Implementación de un Contenedor Docker MongoDB
A partir de la imagen de MongoDB que descargó, ahora puede implementar un contenedor de MongoDB. Inicializará su contenedor de MongoDB con el ejecutable mongo, creará un directorio de datos. Luego definirá la asignación entre el área de datos del contenedor Docker y la máquina host.
1. Ejecute el comando mkdir
a continuación para crear un directorio de datos llamado mongodata
para almacenar la base de datos y los registros de MongoDB.
2. A continuación, ejecute el comando docker run
a continuación para crear un contenedor con el nombre mymongo
. Además, el contenedor se inicia con un pseudo-TTY interactivo (-it
), en caso de que se deba mostrar la salida al iniciar el contenedor.
Finalmente, el directorio recién creado mongodata está vinculado (-v
) al directorio interno, /data/db. La opción -d
inicia el contenedor en el modo desconectado, por lo que se ejecuta como un proceso en segundo plano y devuelve la salida de la consola al crearlo.
El sistema crea automáticamente el directorio /data/db cuando ejecutas el contenedor para almacenar datos de los cambios que realizas en el contenedor. Este directorio se ejecuta de manera similar al modo de solo lectura y permite el almacenamiento de datos persistente en el sistema host.
Una vez que el comando se complete correctamente, verás una salida como la que se muestra a continuación.

3. Por último, ejecuta el comando docker ps
a continuación para identificar el ID del contenedor y verificar su estado. El comando docker ps
muestra toda la información sobre el contenedor que se está ejecutando actualmente.
El comando
docker ps
es comparable al comando regularps
en Linux.
En la salida que se muestra a continuación, puedes ver una sección de Puertos que lista todos los puertos asignados al contenedor para escuchar conexiones entrantes.
En este ejemplo, el puerto 27017 está mapeado al host. La siguiente salida indica que puedes acceder a la instancia de MongoDB en este contenedor a través de localhost:27017 desde el host.

Tal vez quieras ver el archivo de registro del contenedor
mymongo
para determinar qué sucedió en tu base de datos/instancia de mongo cuando algo salió mal. Si es así, ejecuta el comandodocker logs
, así:sudo docker logs docker-container
. Reemplazadocker-container
con el nombre de tu contenedor Docker.

Adjuntar el Contenedor Docker MongoDB a la Shell de Bash
Acabas de implementar un contenedor Docker MongoDB, pero ¿cómo lo gestionas? Hazlo adjuntando el contenedor Docker a la shell de Bash con el comando docker exec
primero.
Adjuntar tu contenedor a la shell de Bash es crucial ya que el contenedor se está ejecutando actualmente en modo desvinculado (en segundo plano). Y si el contenedor se ejecuta en segundo plano, no recibirá ninguna entrada ni mostrará ninguna salida.
Ejecuta el comando docker exec
abajo para adjuntar tu contenedor (mymongo
) a la shell de Bash.
Cuando el comando se complete, tu indicador cambiará a algo como el que se muestra a continuación. El número alfanumérico único (77782fa95314) es la identificación del contenedor.
Los IDs de contenedor son esenciales para evitar conflictos de nombres e identificar eficazmente los contenedores entre hosts, así que trata de no cambiarlos.

Ahora ejecuta el comando mongo
sin ningún argumento para iniciar sesión en la shell de MongoDB en el contenedor (mymongo). La shell de MongoDB es donde ejecutas tus consultas/comandos de mongo.
Una vez que estés en el contenedor, puedes ejecutar cualquier comando sin el prefijo
sudo
ya que ahora eres un usuario root dentro del contenedor. Cada cambio que realices en el contenedor no afectará tu sistema host.
Observando el indicador que se muestra a continuación, puedes saber que ahora estás en la shell de MongoDB.

Si prefieres ver todos los comandos disponibles en la shell de MongoDB, ejecuta el comando
help
, como se muestra a continuación.

Creación de un Usuario Administrativo de MongoDB
Después de haber desplegado un servidor MongoDB dentro de un contenedor Docker, ahora crearás un usuario administrativo de MongoDB. Un usuario administrativo te permite conectarte al servidor MongoDB y gestionar bases de datos.
1. Inicia sesión en la shell de MongoDB nuevamente y ejecuta el use
comando a continuación para cambiar primero a la base de datos admin
. Al hacerlo, se proporcionan al usuario administrativo los permisos adecuados para gestionar las bases de datos.

Copia y pega el siguiente código en el prompt de MongoDB para crear un usuario administrativo.
El código a continuación utiliza el método db.createUser()
para crear un usuario con roles administrativos. El nombre de usuario (user
) y la contraseña (pwd
) a continuación están codificados, los cuales puedes cambiar según tu preferencia.
Si el código funciona, obtendrás un mensaje como el siguiente en tu prompt de MongoDB.

3. Ejecuta la consulta quit()
a continuación para salir del shell de MongoDB.
4. Finalmente, ejecuta el siguiente comando mongo
para probar el usuario administrativo que creaste (ata
) conectándote al servidor de MongoDB. Ingresa la contraseña del usuario administrativo cuando se te solicite.
Como puedes ver a continuación, el servidor de MongoDB imprime la versión del servidor de MongoDB si te conectas al servidor correctamente.

Tal vez quieras probar aún más al usuario administrativo. Si es así, ejecuta los siguientes comandos para mostrar todos los usuarios en la base de datos.
A continuación, puedes ver que el usuario administrativo que creaste está en la lista.

Creando una Base de Datos MongoDB
Gestionar un contenedor Docker MongoDB no estaría completo sin crear una base de datos. Crearás una nueva base de datos MongoDB en la que almacenarás datos a través de la shell de MongoDB.
1. Desde una sesión interactiva dentro del contenedor Docker, ejecuta el comando show dbs
a continuación para listar todas las bases de datos en tu servidor.
A continuación, puedes ver una base de datos de admin, una base de datos de configuración y una base de datos local. La shell de MongoDB crea estas bases de datos automáticamente en cada servidor de MongoDB.

2. A continuación, ejecuta el comando use
a continuación para crear una nueva base de datos. Reemplaza <nombre_de_base_de_datos>
con el nombre de la base de datos que elijas. Pero para este ejemplo, la base de datos se llama linux
.
La consulta
use
cambia la base de datos actual a la que especifiques si existe. Si no existe, la consultause
crea una nueva base de datos y cambia automáticamente a ella.

3. Vuelve a ejecutar el comando show dbs
como lo hiciste anteriormente (paso uno) para ver si la base de datos que creaste existe.
Aún no veo la base de datos recién creada (Linux) en la lista. MongoDB construye la base de datos solo cuando almacenas datos en ella por primera vez. Los datos pueden estar en forma de una colección o incluso un documento.

4. Ahora copia/pega el código a continuación en la consola de MongoDB y presiona Enter.
El código a continuación crea una nueva colección llamada linux_version
, que puedes cambiar al nombre que prefieras. La colección contiene datos en formato de pares clave:valor.
En la salida a continuación, puedes ver que la colección linux_version
está creada y viene con un ObjectID.

5. Ejecuta el comando show collections
para ver una lista de colecciones y verifica si la nueva colección linux_version
existe.
Puedes ver a continuación que has creado con éxito la colección linux_version.

6. Finalmente, ejecuta el comando a continuación para ver y confirmar que los datos que insertaste en la colección linux_version
son correctos. El método pretty() te permite visualizar los datos en un formato legible para humanos.
Si alguna vez modificas los datos en la base de datos, utiliza el método
Update()
.
Puedes ver que la salida a continuación está en un formato mucho más legible.

Reiniciar el Contenedor Docker de MongoDB
En este punto, tienes un contenedor Docker de MongoDB en funcionamiento con éxito. Pero, ¿qué pasa si ya no necesitas el contenedor o si no está funcionando? Algunos comandos de Docker pueden ayudarte a detener, reiniciar e incluso eliminar un contenedor Docker de MongoDB.
1. Ejecuta el comando docker ps
a continuación para listar todos los contenedores en ejecución.
Observa el nombre y el ID del contenedor que deseas detener, reiniciar o eliminar, como se muestra a continuación.

2. Luego, ejecuta uno de los comandos docker stop
a continuación para detener un contenedor MongoDB en ejecución.
3. Vuelve a ejecutar el comando docker ps
como lo hiciste anteriormente (en el paso uno) para verificar si el contenedor se ha apagado.
Como puedes ver a continuación, el contenedor no está en la lista de contenedores en ejecución, lo que indica que has detenido el contenedor con éxito.

4. Ahora ejecuta cualquiera de los comandos docker start
a continuación si decides reiniciar un contenedor.
5. Por último, vuelve a ejecutar el comando docker ps
para ver si el contenedor está en ejecución.
Tal vez ya no necesites más un contenedor. Si es así, primero debes detener el contenedor y luego ejecutar el comando
rm
para eliminarlo, así:sudo docker container rm mongodb
. Similar a los ejemplos anteriores, reemplazamongodb
con el nombre o ID del contenedor.
Conclusión
En este tutorial, has aprendido cómo implementar y administrar un contenedor Docker MongoDB creando un usuario administrador para crear una base de datos y almacenar datos en ella. Te has dado cuenta de que puedes detener, reiniciar y eliminar contenedores que ya no necesitas para mantener limpias tus imágenes de Docker.
Implementar y administrar MongoDB con Docker es el primer paso para aprovechar la tecnología de contenedores y reducir los costos generales. ¿Por qué no aprovechar este primer paso para explorar MongoDB más y ver cómo un contenedor Docker MongoDB puede ayudar con tus proyectos?