Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

24_25_GrIA_Redes_Práctica_1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 4

.

Grado en Inteligencia Artificial

REDES [G4121225] [2024/2025]

Práctica 1 - Instalación de Docker

Resumen
El objetivo de esta práctica es instalar el gestor de contenedores Docker y desarrollar habilidades
básicas en su manejo.

1. Indicaciones previas
Aunque esta práctica se realizará en pareja, la instalación de Docker deben realizarla los dos miembros.
No se puede utilizar internet para buscar ayuda sobre los comandos de Docker, sino que debes aprender
a utilizar la ayuda por lı́nea de comandos: docker --help o docker <comando> --help.

2. Instalación de Docker
En primer lugar, debemos acceder a la web oficial de Docker (https://www.docker.com/), desplegar el
menú “Developers”, y seleccionar la opción “Documentation”. A continuación, debemos pinchar sobre la
opción “Get Docker”, seleccionar el sistema operativo de nuestro equipo, y seguir las instrucciones. Es
muy importante asegurarnos de que, antes de comenzar la instalación de Docker, nuestro
PC cumpla los requisitos del sistema pertinentes, realizando las instalaciones/activaciones
que se indiquen. Los usuarios de Windows deberán utilizar Windows Subsystem for Linux
(WSL) 2

3. Hello World!
Tras la instalación, es indiferente si hemos instalado Docker Desktop (disponible en Windows, Mac,
Linux), o Docker Engine directamente (disponible solo en Linux); lo importante es que al final tendremos
Docker funcionando en nuestro PC. En el caso de Docker Desktop, la instalación incluye:
Una pequeña máquina virtual de Linux sobre la que ejecutar Docker Engine.
Docker Engine (parte central de Docker).
Un demonio del sistema operativo que se encarga de que Docker funcione.
Una interfaz de linea de comandos (CLI) que nos permitirá interactuar con Docker.
En caso de instalar Docker Engine directamente (solo Linux), se omite la máquina virtual al no ser
necesaria.
Pasemos ahora a crear nuestro primer contenedor, con el que validar la instalación previa de Docker.
Partiremos de los siguientes ficheros; revisad el contenido de los mismos para asegurar que todo está
acorde a estas indicaciones:
app.mjs: Una aplicación en Node.js que espera una conexión en un determinado path, el raı́z (/)
en nuestro caso, y en un determinado puerto, el 3000. Al mismo tiempo, la aplicación “simula” una
conexión a una base de datos, acorde al fichero database.mjs.
database.mjs: Código que simula la conexión con la base de datos; en realidad, lo único que hace
es esperar un tiempo determinado, 2 segundos en este caso, para dar la impresión de que realiza
operaciones por detrás.
package.json: Contiene todas las dependencias que deberı́amos instalar con el comando npm
install para que funcione la aplicación app.mjs.
Para desplegar esta aplicación en un contenedor de Docker, necesitamos crear antes una imagen, ya que
todo contenedor es una instancia de una imagen de Docker. Más adelante detallaremos la diferencia entre
contenedores e imágenes. Para crear la imagen, vamos a seguir los siguiente pasos:
1. Crear un fichero llamado Dockerfile: En él le indicaremos a Docker cómo deberı́a crearse nuestro
contenedor mediante una serie de instrucciones. Por simplicidad, para esta primera práctica utili-
zaremos el Dockerfile proporcionado por el profesor, el cual contiene las siguientes instrucciones:
FROM node:14 → Vamos a usar Node.js versión 14.
WORKDIR /app → Establecemos el directorio de trabajo dentro del sistema de ficheros del
contenedor (se crea si no existe). Aquı́ es donde se ejecutarán todas las posteriores instrucciones
del Dockerfile cuando no se especifique ningún otro directorio.
COPY package.json . → Copiamos el fichero package.json desde fuera del contenedor al
directorio de trabajo, representado por el punto (.)
RUN npm install → Instalamos las dependencias para que nuestra aplicacion funcione.
COPY . . → Copiamos todos los ficheros del directorio actual en el host (tu PC personal), al
directorio de trabajo en el contenedor.
EXPOSE 3000 → Indicamos el puerto a usar para escuchar peticiones (coincide con el que usa
nuestra aplicación).
CMD [‘‘node’’, ‘‘app.mjs’’] → Comando a ejecutar al lanzar el contenedor.
2. Situarnos en el directorio donde tenemos el Dockerfile y el resto de ficheros, y ejecutar el siguiente
comando:

docker build .

El punto final también es parte del comando, y le indica a Docker donde está el Dockerfile.
En la Figura 1 podemos ver un ejemplo de la salida del comando que construye la imagen. Si nos fijamos
en la última lı́nea (writing image sha256:c14455038acbb0b089339c6251174a28f38f514049f5a 0.0s),
veremos el ID asignado a la imagen que acabamos de crear, y que usaremos para crear nuestro contene-
dor. Ojo: el ID en vuestro PC será diferente, y deberéis usarlo en el resto de comandos de este guión,
sustituyendo el que aparece escrito como referencia.
Ahora vamos a lanzar nuestro contenedor a partir de la imagen construida. Para esto, utilizamos el
siguiente comando:

docker run -p 3000:3000 c14455038acbb0b089339c6251174a28f38f514049f5a

2
Figura 1: Salida del comando docker build .

¿Ha funcionado bien, o ha mostrado algún mensaje de error? En caso de que haya habido un problema,
seguramente sea por no haber seguido las instrucciones al pie de la letra. Interpreta el mensaje, soluciona
el problema, vuelve a crear la imagen, y vuelve a lanzar el contenedor.
Por otra parte, ¿por qué necesitamos utilizar el argumento -p 3000:3000 en el comando anterior? Pista:
Recuerda que un contenedor es una unidad de software aislada de nuestro host y del resto de contenedores.
Esto no impide que existan maneras de crear conexiones entre ellos.
Y el último paso es acceder, desde nuestro navegador, a la dirección http://localhost:3000/ para ver
el resultado. ¿Qué se muestra?
Ahora bien, ¿cómo podemos parar el contenedor?:
1. Desde otra terminal, ejecutamos docker ps para ver los contenedores que se están ejecutando.
Como se puede ver en la Figura 2, el contenedor que se lanzó aparece identificado con el nombre
hardcore_curran.
2. Desde esta nueva terminal abierta, ejecutamos el comando para deter este contenedor; puede que

3
Figura 2: Listado de contenedores activos.

tarde un poco: docker stop hardcore_curran

4. Ejercicios
En el siguiente comando, ¿cuál es el puerto del host y cuál es el del contenedor?

docker run -p 8080:80 c14455038acbb0b089339c6251174a28f38f514049f5a

Averı́gualo jugando con la instrucción docker run que usaste anteriormente para la imagen creada.
Mediante la lı́nea de comandos, consulta cuántas imágenes de Docker hay construidas en tu PC.
Mediante la lı́nea de comandos, consulta cuántos contenedores de Docker hay en funcionamiento.
Mediante la lı́nea de comandos, consulta cuántas imágenes hay en total en tu PC.
Mediante la lı́nea de comandos, consulta cuántos contenedores hay en total en tu PC.
Nota: Utiliza los comandos docker --help y docker <comando> --help para solicitar ayuda sobre
algunos comandos y responder las preguntas anteriores.

5. Formato y fecha de entrega


Haz un breve informe respondiendo a todas las preguntas que se formulan en esta guı́a. Incluye
todos los comentarios pertinentes para justificar las respuestas, ası́ como capturas de pantalla de
los resultados cuando sea necesario. Sube al Campus Virtual un único archivo llamado:
Apellido1 Apellido2-Apellido1 Apellido2.pdf
En la nota obtenida se tendrán en cuenta la estructura y claridad, tanto del informe como de las
respuestas a las preguntas.
La evaluación de esta práctica puede estar sujeta a una revisión individual.
Fecha de entrega: Hasta las 23:59 del dı́a anterior a la siguiente sesión interactiva de tu grupo de
prácticas. Revisa el apartado de entrega en el Campus Virtual para verificar esta fecha.

También podría gustarte