MongoDB en un Contenedor Docker y Robomongo (ROBO 3T).
Para probar la última versión de MongoDB, motor NoSQL al que te lengo un gran cariño, y en el que me certifiqué como DBA MongoDB hace unos años, pero corriendo en un contenedor.
Comenzamos con el proceso normal de “bajar una imágen” del Hub de Docker, correrla, asociar una carpeta de nuestro equipo real con una carpeta en el contenedor.
# docker run --name mongobongo -v /home/dac/Downloads/mongodb:/data/db -d mongo:3.5
Unable to find image 'mongo:3.5' locally
3.5: Pulling from library/mongo
d13d02fa248d: Pull complete
bc8e2652ce92: Pull complete
3cc856886986: Pull complete
c319e9ec4517: Pull complete
b4cbf8808f94: Pull complete
e42648c7b452: Pull complete
3fce988bf680: Pull complete
0d3ae40a4e35: Pull complete
dbbdb4a86824: Pull complete
d4624d0639de: Pull complete
Digest: sha256:82e1da5703ed53b03b8f7cac9e531b114d7493476e04b5d624e968f38bb97f07
Status: Downloaded newer image for mongo:3.5
f4f7b9312d3a482e03c9ddd96e707e193816c44055e52ec046ec1285b2792d2d
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f4f7b9312d3a mongo:3.5 "docker-entrypoint..." 6 seconds ago Up 5 seconds 27017/tcp mongobongo
La imágen guardada localmente mide 371 mb
# docker images
mongo 3.5 a2ab5e364821 2 weeks ago 371MB
Descargamos un fichero JSON de ejemplo (Datos de Restaurants) para subir luego a una base MongoDB
# wget https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
Nos instalamos los “tools” de MongoDB
# pacman -S mongodb-tools
resolving dependencies...
looking for conflicting packages...
Packages (1) mongodb-tools-3.4.9-1
Total Download Size: 20,56 MiB
Total Installed Size: 100,90 MiB
:: Proceed with installation? [Y/n] y
:: Retrieving packages...
mongodb-tools-3.4.9-1-x86_64 20,6 MiB 2,38M/s 00:09 [##################################] 100%
(1/1) checking keys in keyring [##################################] 100%
(1/1) checking package integrity [##################################] 100%
(1/1) loading package files [##################################] 100%
(1/1) checking for file conflicts [##################################] 100%
(1/1) checking available disk space [##################################] 100%
:: Processing package changes...
(1/1) installing mongodb-tools [##################################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
Importamos el fichero de ejemplo de Restaurantes
# mongoimport --db resto --collection restaurants --drop --file ./primer-dataset.json -h 172.17.0.2
2017-11-25T19:14:11.080+0100 connected to: 172.17.0.2
2017-11-25T19:14:11.081+0100 dropping: resto.restaurants
2017-11-25T19:14:11.811+0100 imported 25359 documents
Probamos “RoboMongo” (ahora llamado “Robo 3T”) como cliente GUI para interactuar con MongoDB. Recordemos que todos los datos estarán en nuestro equipo real, en la carpeta “/home/dac/Downloads/mongodb”.
GRAFICO:
Un punto a evaluar en las pruebas es la medida de las imágenes que tenemos descargadas localmente y compararlas con una distro Linux completa, siempre recomendamos usar Contenedores y Docker por los beneficios que obtenemos del producto, pero en el caso de tener que correr un aplicativo que use 4 o mas contenedores para servicios distintos (web, nodejs, mongodb, mariadb, redis) al final la suma del espacio utilizado por todos puede llegar a ser igual a la de un equipo virtual.
Sugerimos evaluar ambas soluciones porque puede que por performance, espacio usado, intercomunicaciones entre servicios, facilidad de instalación, backups, aislamiento y otros puntos relevanete, puede que Docker o puede que la Virtualización sea la mejor opción.