¿Cómo instalar MongoDB con Docker?
En los últimos años el desarrollo de las bases de datos ha crecido como nunca antes, a la medida que aumenta el volumen de datos que se genera por la presencia de una mayor cantidad de dispositivos conectados, han surgido nuevos mecanismos para la persistencia de los datos. Las bases de datos orientadas a documentos JSON, se han popularizado y cada vez más son una solución a tener en cuenta sobre las bases de datos relacionales.
La presente entrada es el preámbulo para otro que publicaré en los próximos días sobre Repositorios Reactivos en Spring Boot con MongoDB; es entonces objetivo de este Post enseñar a ejecutar MongoDB con Docker.
¿Qué es docker?
Por lo sencillo, docker es una tecnología de creación de contenedores que permite la creación y el uso de de los mismos.
Desde la web de RedHat: “Docker usa el kernel de Linux y las funciones de este, como Cgroups y namespaces, para segregar los procesos, de modo que puedan ejecutarse de manera independiente. El propósito de los contenedores es esta independencia: la capacidad de ejecutar varios procesos y aplicaciones por separado para hacer un mejor uso de su infraestructura“
Anteriormente eran más populares las máquinas virtuales, pero estas tienen el inconveniente de ser un sistema operativo (virtualizado), ejecutándose dentro otro sistema operativo (host) y dentro del sistema virtualizado entonces se instalaban las aplicaciones como MongoDB, con docker en el mismo host, a partir de las ventajas del kernel podemos desplegar, por ejemplo múltiples instancias de un mismo MongoDB y estas se ejecutarán de forma independiente entre sí, dándonos una gran ventaja para optimizar el rendimiento y mejorar los tiempos de puesta en operación.
¿Qué es MonoDB?
MongoDB es una base de datos distribuida, de proposito general y basado en documentos (JSON), actualmente junto a ElasticSearch es uno de los motores NoSQL más populares, tiene una versión gratuita.
Instalación de MongoDB con docker
En docker, la forma más común de instalar imágenes es a través del hub oficial de contenedores (DockerHub), aunque existen respositorios personalizados (llamados comúnmente registros, docker-registry), ¿… por cierto sabes que puedes montarte tu propio registro personal de imágenes docker?, si lo deseas hacer te recomiendo Nexus Repository Manager.
Para instalar MongoDB lo haremos desde el hub oficial, una vez instalado docker, ejecutaremos el siguiente comando:
sudo docker pull mongo
Este comando nos traerá la imagen de mongo y la guardará localmente en nuestro computador.
Para ponerla en operación primero vamos a crear un volumen que nos permita, que aunque se apague la computadora, o deseemos parar el servicio de docker los datos persistan y no sean volátiles. Para ello crearemos una carpeta que será donde nuestro contenedor guardará sus datos, lo haremos en /opt
sudo mkdir -p /opt/mi-mongo
chmod 777 -R /opt/mi-mongo
Una vez ya tengamos el directorio para el volumen creado entonces vamos a levantar la imagen de docker:
sudo docker run --name mi-mongo -p 27017:27017 -v /opt/mimongo:/data/db -d mongo
En el comando anterior, le estamos diciendo a docker que ponga en funcionamiento una imagen de nombre “mi-mongo”, cuyo puerto 27017 lo exponga por el mismo puerto de nuestro sistema operativo, que use el volumen creado en /opt/mi-mongo para poner los datos y que la imagen la levante usando como base la imagen llamada mongo que previamente descargamos con la instrucción docker pull.
Para verificar que todo esta bien, puedes ejecutar el comando de Linux netstat -tln y el puerto 27017 aparecerá en uso.
Sugerencia: Portainer para administrar las imágenes docker
Como elemento adicional es sugerido usar Portainer, Portainer es una herramienta muy útil para administrar el ciclo de vida de nuestros contenedores, nos ofrece una UI web muy intuitiva en la que podemos hacer casi todas las operaciones que se pueden hacer sobre un contenedor docker.
Les dejo una captura de Portainter
Espero te haya sido útil el artículo, puedes invitarme a un café si quieres.
1 thought on “¿Cómo instalar MongoDB con Docker?”