Está en la página 1de 12

1

UNIVERSIDAD TECNOLOGICA DE
HONDURAS

Arquitectura de Computadoras

Tarea de investigación #2

ING. Kenny Joseph Cooper


Ingeniería en Computación

José Danery Velásquez


201510060135

Daniel Omar Guardado-Bueso


201710060123

Oscar David Gómez Guevara


201320060121

Fecha: 1 de noviembre del 2020 campus Tegucigalpa


2

Índice
Introducción ..................................................................................................................... 3
Características de la aplicación ....................................................................................... 4
Instalación de Docker en Windows ................................................................................. 6
Instrucciones para instalar MongoDB ............................................................................ 8
Ejemplo de uso del software sobre docker ...................................................................... 9
Conclusiones ................................................................................................................... 12
3

Introducción
A lo largo de la historia, los seres humanos hemos encontrado la manera más eficiente de

realizar las cosas, esto para facilitar los procesos y actividades a realizar, como por ejemplo

la invención de la rueda o la creación de ordenadores y otros proyectos que hoy en día vemos

como normal y que en un entonces no lo era. La tecnología avanza a pasos agigantados al

igual que la cantidad de datos (información) aumenta exponencialmente, esto nos ayuda a

pensar la mejor manera de cómo poder organizar toda esta información de la manera más

eficiente posible. Con la ayuda de la virtualización en computación nos permitió trabajar con

múltiples sistemas en un mismo hardware, pero esto como era de esperar nos consume

muchos recursos y además permite que se vuelva en teoría más lento ciertos procesos, hay

duplicidad de actividades en los sistemas y la administración puede llegar a ser muy costosa,

por esta razón de la implementación de los contenedores vinieron hacer una revolución en

las empresas multiplataformas que se dedican a realizar software, manejar bases de datos,

administraciones y programación web.

En el siguiente documento se encontrará con una investigación acerca de los contenedores

en especial de Docker, se hablará de imágenes de bases de datos (mongoDB y mongo

Express) características de estas aplicaciones, para qué sirven, instrucciones de instalación

entre otros. Sin más que agregar empecemos.


4

Características de la aplicación
Docker es una herramienta de código abierto que desde hace ya algunos años se está hablando
mucho y cada vez más. Con Docker podremos ejecutar un conjunto de procesos de forma
aislada, crear herramientas gracias a sus imágenes y compartirlas gracias al repositorio que
tienen.

FUNCIONAMIENTO GENERAL

Imágenes y contenedores
Las imágenes en Docker se podrían entender como un componente estático, ya que no son
más que un sistema operativo base, con un conjunto de aplicaciones empaquetadas, mientras
que un contenedor es la instanciación o ejecución de una imagen, pudiendo ejecutar varios
contenedores a partir de una misma imagen.
Para seguir hablando de los contenedores tenemos que decir qué, al contrario de la
virtualización, Docker no emula o virtualiza un sistema operativo entero, sino que aprovecha
el sistema operativo sobre el cual se está ejecutando, por lo que comparte el núcleo del
sistema operativo anfitrión e incluso las librerías.

Por otra parte, respecto al almacenamiento en disco, una máquina virtual puede ocupar varias
gigas ya que tiene que contener un sistema operativo, sin embargo, los contenedores Docker
sólo contienen aquello que les diferencia del sistema operativo en las que se ejecutan.
Hay que mencionar también que los contenedores hacen un uso eficiente del sistema
anfitrión, ya que comparten recursos con él (núcleo del sistema y parte de las bibliotecas).
Así que los contenedores usan únicamente la memoria RAM y la capacidad de cómputo que
estrictamente necesiten.
5

Imagen
 Una imagen representa la captura de un estado particular de un contenedor.
 Dentro de una imagen debe especificarse todo lo que debe componer al contenedor
en estado de ejecución. Pueden incluirse tantas aplicaciones como se desee.
 Las imágenes manejan herencia, podemos partir de una imagen padre y heredarla para
heredar así también todos sus componentes.
 Existe un repositorio de imágenes que es público, denominado Docker Hub. En él se
pueden descargar imágenes preconfiguradas con diferentes componentes (bases de
datos, índices, servidores de aplicaciones, etc.).

Contenedor
 Un contenedor es el estado en ejecución de una imagen.
 A partir de una imagen pueden ejecutarse uno o varios contenedores, los mismos
pueden agregarse o quitarse dinámicamente.
 Se pueden realizar cambios sobre un contenedor determinado y guardar los cambios
realizando un “commit” en el repositorio de Docker. Al realizar un commit de un
estado particular de un contenedor, el repositorio de Docker asignará un nuevo
número de versión y creará una nueva imagen con estos cambios.
DockerFile
 Archivo de texto que contiene todos los comandos necesarios que se correrán durante
la creación y ejecución del contenedor.
 Utilizando Docker build se creará una imagen partiendo de un determinado
dockerfile.
Docker Registry

 El Docker Registry se utiliza como repositorio de imágenes.


 Se puede crear un Docker registry propietario de cualquier proyecto o bien se puede
utilizar alguno público.
 Ejemplos de Docker Registry públicos son Docker Hub (gratuito) y Docker Trusted
Registry (con costo).

MongoDB
Es una base de datos de documentos que ofrece una gran escalabilidad y flexibilidad, y un
modelo de consultas e indexación avanzado.

 MongoDB almacena datos en documentos flexibles similares a JSON, por lo que los
campos pueden variar entre documentos y la estructura de datos puede cambiarse con
el tiempo
6

 MongoDB es una base de datos distribuida en su núcleo, por lo que la alta


disponibilidad, la escalabilidad horizontal y la distribución geográfica están
integradas y son fáciles de usar.
 El modelo de documento se asigna a los objetos en el código de su aplicación para
facilitar el trabajo con los datos.

Instalación de Docker en Windows


Para instalar Docker en Windows, hay muchas opciones de cómo hacerlo y una de ellas es
instalar un programa llamado Docker Toolbox o si bien se puede hacer desde la ventana de
comandos Shell o si bien desde la aplicación de escritorio de Docker, en este caso
explicaremos como lo hicimos nosotros, qué herramientas utilizamos y demás.

Instrucciones para la instalación de Docker


La instalación de Docker en Windows 10 es realmente sencilla, ya que simplemente debemos
hacer doble click sobre el ejecutable que nos hemos descargado anteriormente. El asistente
de instalación se encargará de descargar de Internet todo lo necesario para su puesta en
funcionamiento, no obstante, nos preguntará si queremos utilizar contenedores Windows en
lugar de contenedores Linux. Por defecto, hace uso de contenedores Linux, aunque estemos
usando Windows 10, no obstante, esto podremos cambiarlo posteriormente sin problemas.
7

Al finalizar la instalación, nos indicará que es recomendable hacer uso de Hyper-V para que
Docker funcione perfectamente en Windows 10. No obstante, también nos indica que, si
tienes instalado Virtual Box, este dejará de funcionar.

Una vez que activemos esto, el ordenador se reiniciará para aplicar los cambios en Windows,
de hecho, se reinicia en un par de ocasiones. Una vez que volvamos al sistema operativo,
podremos ver que se ejecutará Docker al inicio de Windows, aunque esto lo podremos
cambiar más adelante.
En las opciones de Docker vamos a poder acceder a las opciones del propio software,
comprobar actualizaciones, o cambiar de contenedores Linux a contenedores Windows
fácilmente. Además, también vamos a poder hacer uso de nuestro Docker ID para acceder a
los repositorios de Docker Hub.
En la sección de «Settings» es donde podremos ver las principales configuraciones a realizar
con Docker, como por ejemplo seleccionar los discos compartidos, opciones de red, uso de
Proxy y muchas otras opciones.
8

Instrucciones para instalar MongoDB


En una terminal ejecuta lo siguiente:

docker run -d -p 27017:27017 --name mydatabase mongo:4.2

El comando de arriba hace lo siguiente:

 d: Este parámetro permite que ejecutemos el proceso en background así la terminal


no nos queda ocupada.
 -p 27017:27017: Acá le decimos a Docker que las conexiones del puerto 27017 del
contenedor se redireccionen al 27017 de nuestra máquina host (o sea nuestra
computadora).
 –name mydatabase: Con esto indicamos el nombre de nuestro contenedor, yo use
mydatabase porque estoy practicando mi inglés, pero pueden usar el nombre que
mejor los represente.
 mongo:4.2: Y por último y no menos importante - por el contrario, es la parte más
importante - el nombre de la imagen que queremos usar más la versión separada por
dos puntos. Uso la versión 4.2 porque es la actual al momento de escribir este post.

Una vez hecho eso ya tenemos nuestro contenedor listo para jugar con mongo.

Creando una base de datos en mongo


Para crear una base de datos primero necesitamos conectarnos al contenedor que acabamos
de generar, eso lo podemos lograr usando el comando exec de docker:

docker exec -it mydatabase bash

 -it: Es para indicar que queremos ejecutar de manera interactiva y que nuestra
terminal tome el control de la instrucción que vamos a pasarle al final.
 mydatabase: es el nombre del contenedor sobre el cual vamos a trabajar
 bash: Este es el comando que queremos ejecutar, es decir queremos acceder al shell
del contenedor

Una vez hecho esto, ya estamos dentro del contenedor de mongo, pero para poder crear la
base de datos necesitamos ingresar al Shell de mongo, fácilmente lo podemos realizar
escribiendo mongo en la terminal

Base de datos Mongo


Nos aparecen muchos logs, pero vemos que ya estamos en el shell de mongo.
Una vez dentro podemos crear la base de datos usando la instrucción use.

use UTH # creamos una base de datos llamada UTH


9

Ahora estamos dentro de la base de datos, creemos una colección llamada courses y un
documento.
db.courses.insertOne({ name: 'Curso de MongoDB' })

Y para comprobar que mongo no nos da por nuestro lado y realmente creó el documento
verificamos nuestra colección usando el método find.

db.courses.find()

Ejemplo de uso del software sobre docker

En el siguiente apartado, se mostrará todos los componentes de Docker que se utilizaron con
pruebas, como, por ejemplo:

1. Docker Desktop.

En la pantalla principal de Docker podemos observar los contenedores que tenemos creados.

 Imágenes que contiene Docker

En este apartado podemos observar las imágenes que tenemos instaladas y llevar control de
cuales están siendo utilizadas.
10

Aquí se hacen configuraciones de las imágenes como los puertos que utilizan.

2. Dockerfile

Con el dockerfile logramos la comunicación entre Mongo y Mongo Express.


11

3. Instalación de la imagen Node.js

Se descargó Node.js para poder usar los comandos que requiere Mongo Express para poder
ser instalado (en especial el comando npm).

npm es el Node Package Manager que viene incluido y ayuda a cada desarrollo asociado a
Node.

Al finalizar todos los procesos, ingresamos a nuestro navegador y colocamos la dirección


https://localhost:8081

Y por último creamos dos bases de datos, una llamada Prueba, que fue la que utilizamos para
familiarizarnos con el programa y la otra llamada UTH_Arquitectura que desarrollamos
posteriormente.
12

Conclusiones

 Utilizar Docker nos ayudó a comprender el uso y manejo de los contenedores con
imágenes de bases de datos como MongoDB y Mongo Express.
 Con el uso de Node.js tuvimos la capacidad de trabajar con ambas bases de datos, y
logramos administrar la agrupación de conexiones.
 Pudimos entender que el manejo de los contenedores es esencial en una empresa que
se dedica al desarrollo tecnológico multiplataforma, y logramos diferenciarlos de
máquinas virtuales que consumen más recursos.
 Pudimos diferenciar Mongo y Mongo Express a pesar que ninguno de nosotros tenía
conocimiento previo, al igual que el contenedor Docker.