MongoDB es una base de datos NoSQL basada en documentos que es buena para el almacenamiento de datos de gran volumen. En lugar de utilizar tablas y filas como las bases de datos relacionales tradicionales, MongoDB hace uso de colecciones y documentos. Los documentos constan de pares clave-valor que son la unidad básica de datos en MongoDB. En este tutorial, usaremos Docker para lanzar un contenedor que ejecuta MongoDB. Una vez que está funcionando en un contenedor, podemos conectarnos a él en un shell y probar algunos de los comandos comunes de Mongo.
Inicie MongoDB en Docker
Con Docker instalado y en ejecución, la activación de un contenedor Mongo se realiza usando el comando aquí.
vegibit @ ThinkPad MINGW64 ~ $ docker ejecutar --name mongo -d mongo No se puede encontrar la imagen 'mongo: última' localmente último: Extrayendo de la biblioteca / mongo 171857c49d0f: Tirando de la capa fs 419640447d26: Tirando de la capa fs 61e52f862619: Tirando de la capa fs 892787ca4521: Tirando de la capa fs 06e2d54757a5: Tirando de la capa fs e2f7d90822f3: Tirando de la capa fs f518d3776320: Tirando de la capa fs feb8e9d469d8: Tirando de la capa fs 69705b632494: Tirando de la capa fs c7daea26376d: Tirando de la capa fs 13d1f9e1fc77: Tirando de la capa fs f87e65fe7ffd: Tirando de la capa fs feb8e9d469d8: Esperando e2f7d90822f3: Esperando c7daea26376d: Esperando 13d1f9e1fc77: Esperando 69705b632494: Esperando f518d3776320: Esperando 892787ca4521: Esperando f87e65fe7ffd: Esperando 06e2d54757a5: Esperando 419640447d26: Verificación de suma de comprobación 419640447d26: Descarga completa 61e52f862619: verificación de suma de comprobación 61e52f862619: Descarga completa 892787ca4521: verificación de suma de comprobación 892787ca4521: Descarga completa e2f7d90822f3: Verificación de suma de comprobación e2f7d90822f3: Descarga completa 06e2d54757a5: Verificación de suma de comprobación 06e2d54757a5: Descarga completa 171857c49d0f: Descarga completa f518d3776320: Verificación de suma de comprobación f518d3776320: Descarga completa 171857c49d0f: Extracción completa 419640447d26: Tire completo 61e52f862619: Tire completo 892787ca4521: Tire completo 06e2d54757a5: Tire completo e2f7d90822f3: Pull complete f518d3776320: Extracción completa 69705b632494: Verificación de suma de comprobación 69705b632494: Descarga completa feb8e9d469d8: Verificación de la suma de comprobación feb8e9d469d8: Descarga completa feb8e9d469d8: Pull complete 69705b632494: Tire completo 13d1f9e1fc77: Verificación de suma de comprobación 13d1f9e1fc77: Descarga completa f87e65fe7ffd: Verificación de suma de comprobación f87e65fe7ffd: Descarga completa c7daea26376d: Verificación de suma de comprobación c7daea26376d: Descarga completa c7daea26376d: extracción completa 13d1f9e1fc77: Tire completo f87e65fe7ffd: Extracción completa Resumen: sha256: a4448eb5f6e6097353d0ab97eb50aeb0238bb4e60c37e401920d3c2c4fc73eb9 Estado: imagen más reciente descargada para mongo: última 08190185820c9b1d513375f9ff011e4042fae95487fd3bcbc3e9c18b5048dc99
¿Qué sucedió cuando corrimos? Docker run –name mongo -d mongo
Una vez que ejecutamos el comando anterior, vimos bastante salida en la terminal. Entonces, ¿qué está pasando exactamente aquí? Estos pasos dan un breve resumen.
- Docker busca la imagen de mongo localmente
- Docker no encuentra la imagen de mongo localmente, por lo que luego verifica hub.docker.com
- La imagen se encuentra y descarga cada capa.
- Se crea un nuevo contenedor basado en la imagen de mongo
- El contenedor se ejecuta y se puede ver a través de cli o Docker Desktop
Podemos ver nuestro nuevo contenedor Mongo ejecutándose con el comando docker container ls .
vegibit @ ThinkPad MINGW64 ~ $ contenedor docker ls ID DE CONTENEDOR COMANDO DE IMAGEN ESTADO CREADO NOMBRES DE PUERTOS 08190185820c mongo "docker-entrypoint.s…" Hace 7 minutos Hasta 7 minutos 27017 / tcp mongo
Con docker container top mongo podemos ver el proceso en ejecución. Un contenedor es solo un proceso que se limita a los recursos a los que puede acceder. No son máquinas virtuales.
vegibit @ ThinkPad MINGW64 ~ $ docker contenedor superior mongo COMANDO DE TIEMPO DE USUARIO PID 986999 0:05 mongod --bind_ip_all
Usar Docker Desktop también es una excelente manera de poder ver y administrar cualquier contenedor en el sistema.
Docker Connect To Container cli
El docker exec
comando ejecuta un nuevo comando en un contenedor en ejecución. Podemos usar esto para ejecutar el comando ps aux dentro del contenedor para ver los procesos en ejecución.
vegibit @ ThinkPad MINGW64 ~ $ docker exec mongo ps aux USUARIO PID% CPU% MEM VSZ RSS TTY ESTADO COMANDO HORA DE INICIO mongodb 1 1,1 2,1 1584916 136412? Ssl 15:20 1:00 mongod --bind_ip_all raíz 76 0.0 0.0 34404 2804? Rs 16:50 0:00 ps aux
Detener el contenedor Mongo
vegibit @ ThinkPad MINGW64 ~ $ docker stop mongo mongo vegibit @ ThinkPad MINGW64 ~ $ docker ps ID DE CONTENEDOR COMANDO DE IMAGEN ESTADO CREADO NOMBRES DE PUERTOS vegibit @ ThinkPad MINGW64 ~ $ docker top mongo Respuesta de error del daemon: El contenedor 08190185820c9b1d513375f9ff011e4042fae95487fd3bcbc3e9c18b5048dc99 no se está ejecutando vegibit @ ThinkPad MINGW64 ~ $ docker exec mongo ps aux Respuesta de error del daemon: El contenedor 08190185820c9b1d513375f9ff011e4042fae95487fd3bcbc3e9c18b5048dc99 no se está ejecutando
Reinicie el contenedor Mongo
vegibit @ ThinkPad MINGW64 ~ $ docker start mongo mongo vegibit @ ThinkPad MINGW64 ~ $ lista de contenedores docker ID DE CONTENEDOR COMANDO DE IMAGEN ESTADO CREADO NOMBRES DE PUERTOS 08190185820c mongo "docker-entrypoint.s…" Hace 2 horas Hasta 19 segundos 27017 / tcp mongo vegibit @ ThinkPad MINGW64 ~ $ docker mongo top docker: 'mongo' no es un comando de docker. Ver 'docker --help' vegibit @ ThinkPad MINGW64 ~ $ docker top mongo COMANDO DE TIEMPO DE USUARIO PID 1253999 0:01 mongod --bind_ip_all
Conéctese al contenedor Shell Of Mongo
Vale genial. Tenemos un contenedor MongoDB en ejecución, pero ¿cómo podemos interactuar con él? Para hacer esto, podemos usar el comando docker exec. Hay algunas partes del comando, así que revisemos lo que hace cada parte.
- docker exec ejecuta un nuevo comando en un contenedor en ejecución
- -it -i = # stdin, -t = # interactivo
- mongo el nombre del contenedor para ejecutar el comando en
- / bin / sh el comando a ejecutar, en este caso lanza el shell
docker exec -it mongo / bin / sh #
El hashtag que ve es el nuevo mensaje dentro del contenedor. Desde allí, podemos lanzar el shell interactivo de mongo:
# mongo MongoDB shell versión v4.4.1 conectándose a: mongodb: //127.0.0.1: 27017 /? compressors = disabled & gssapiServiceName = mongodb Sesión implícita: sesión {"id": UUID ("d882e577-b5a5-438d-8a35-4a2e0002bf50")} Versión del servidor MongoDB: 4.4.1 --- El servidor generó estas advertencias de inicio al arrancar: 2020-09-30T17: 50: 54.021 + 00: 00: Se recomienda encarecidamente utilizar el sistema de archivos XFS con el motor de almacenamiento WiredTiger. Ver http://dochub.mongodb.org/core/prodnotes-filesystem 2020-09-30T17: 50: 54.720 + 00: 00: El control de acceso no está habilitado para la base de datos. El acceso de lectura y escritura a los datos y la configuración no está restringido 2020-09-30T17: 50: 54.720 + 00: 00: / sys / kernel / mm / transparent_hugepage / enabled es 'siempre'. Sugerimos configurarlo en 'nunca' --- --- Habilite el servicio de monitoreo gratuito basado en la nube de MongoDB, que luego recibirá y mostrará métricas sobre su implementación (utilización del disco, CPU, estadísticas de operación, etc.). Los datos de monitoreo estarán disponibles en un sitio web de MongoDB con una URL única accesible para usted y cualquier persona con quien comparta la URL. MongoDB puede usar esta información para hacer productos mejoras y para sugerirle productos y opciones de implementación de MongoDB. Para habilitar el monitoreo gratuito, ejecute el siguiente comando: db.enableFreeMonitoring () Para deshabilitar permanentemente este recordatorio, ejecute el siguiente comando: db.disableFreeMonitoring () --- >
Podemos probar varios comandos de Mongo en el contenedor para ver cómo funciona.
> mostrar dbs administración 0.000GB config 0.000GB local 0.000GB > utilizar myNewDataBase cambió a db myNewDataBase > db myNewDataBase > db.dropDatabase () {"ok": 1} > db.createCollection ("Contenedor"); {"ok": 1} > mostrar colecciones Envase > db.Container.drop () cierto > mostrar colecciones > db.createCollection ("Computadora") {"ok": 1} > db.Computer.insert ({_id: 1, elemento: "Macbook", cantidad: 1}) WriteResult ({"nInserted": 1}) > mostrar colecciones Computadora > db.Computer.count () 1 > db.Computer.find () {"_id": 1, "item": "Macbook", "qty": 1} >
Limpiar
Bueno eso fue divertido. Limpiemos nuestro entorno de ventana acoplable ahora deteniendo el contenedor, eliminándolo y enumerando todos los contenedores para asegurarnos de que se haya ido.
$ docker container stop mongo mongo $ contenedor docker rm mongo mongo $ docker container ls -a ID DE CONTENEDOR IMAGEN COMANDO ESTADO CREADO PUERTOS NOMBRES
Resumen
La conclusión es que una vez que tenemos Docker configurado y en funcionamiento, es bastante fácil iniciar cualquier tipo de contenedor que desee. En este caso, usamos MongoDB. Con la misma facilidad podría haber sido MySQL, Oracle, Java, Postgres, Redis, Ubuntu o lo que queramos. Otra cosa para recordar es que un contenedor es solo un proceso, no es una máquina virtual. Los contenedores son mucho más livianos que una máquina virtual completa y son fáciles de poner en marcha, probar y destruir muy rápidamente.
0 Comentarios