enunciado practica 4 Sistemes Op PDF

Title enunciado practica 4 Sistemes Op
Course Sistemes operatius
Institution Universitat Autònoma de Barcelona
Pages 9
File Size 160.6 KB
File Type PDF
Total Downloads 19
Total Views 154

Summary

enunciado practica 4 Sistemes Operativos 19 año y 18 . Sin resolver...


Description

Título del documento: SO – Práctica 5 – Docker Documento del profesor

Autor: Pere Pons 01/10/2019

Contenido 1 – Objetivos .................................................................................................................................. 2 2 – Introducción a Docker.............................................................................................................. 2 Requisitos .................................................................................................................................. 2 Documentación y enlaces de interés ......................................................................................... 2 Introducción .............................................................................................................................. 2 Conceptos .................................................................................................................................. 3 Instalación de Docker y preparación del entorno ...................................................................... 3 3 – Enunciado de la práctica .......................................................................................................... 4 Ejercicio 1 – Dockerfile .............................................................................................................. 4 Ejercicio 2: Gestión de contenedores ........................................................................................ 5 Ejercicio 3: Acceso al contenedor y volatilidad del FS ............................................................... 6 Ejercicio 4: Volúmenes y Variables de entorno ......................................................................... 7 Ejercicio 5: Nombres y redes ..................................................................................................... 8 Ejercicio 6: Swarm y servicios .................................................................................................... 9

1

Título del documento: SO – Práctica 5 – Docker Documento del profesor

Autor: Pere Pons 01/10/2019

1 – Objetivos Los objetivos a conseguir en esta sesión de prácticas son: • • • • • • • •

Conocer el uso de Docker Saber cómo generar una imagen para crear un contenedor de una aplicación Saber como ver el estado de los contenedores así como lanzarlos y detenerlos. Aprender cómo funcionan los volúmenes y la volatilidad del FS. Conocer como obtener acceso al Shell del los contenedores así como la visualización del stdout en Docker que se ejecutan en background. Conocer el uso de las variables de entorno para la configuración de contenedores. Cómo nombrar los contenedores y mapear los puertos de red para poder ofrecer servicios de red. Saber como se puede efectuar la creación de servicios que ofrezcan alta disponibilidad y tolerancia a fallos.

2 – Introducción a Docker Requisitos • • •

Una máquina, virtual o no, con una instalación de Debian en las que podamos ejecutar sudo o tengamos permisos de administración. Docker Community Edition. Conocimientos mínimos de scripting.

Documentación y enlaces de interés Docu Docum men enta ta tación ción of ofici ici icial al de Do Docke cke ckerr: https://docs.docker.com/install/ Doc Docker ker kerHu Hu Hub b ( https://hub.docker.com/ ) repositorio donde se almacenan las imágenes oficiales de las diferentes distribuciones y donde nosotros podremos almacenar las nuestras. Alpi Alpine ne Li Linux nux nux. Distribución minimalista de Linux orientado a sistemas embebidos. Vamos a escoger esta plataforma por el reducido ancho de banda necesario para poder instalarla. https://alpinelinux.org y https://wiki.alpinelinux.org/wiki/Main_Page

Introducción Docker (www.docker.com) es una plataforma OpenSource que automatiza el despliegue de aplicaciones dentro de contenedores software, empleando virtualización ligera.

2

Título del documento: SO – Práctica 5 – Docker Documento del profesor

Autor: Pere Pons 01/10/2019

Un contenedor es un entorno de ejecución cerrado en el que se ejecuta un proceso. La instancia del contenedor existe mientras el proceso que lo define está en ejecución, cuando el proceso concluye la instancia desaparece. Es, por tanto, una aproximación completamente distinta a la virtualización de una máquina, donde se representa un ordenador completo y se pueden ejecutar múltiples procesos, tal y como en una máquina de física.

Por tanto, definiremos imágenes de contenedores, de las que crearemos contenedores que serán las que ejecutarán los trabajos que deseemos.

El sistema de ficheros, que es volátil, se organiza por capas. Esto se materializa, por ejemplo, en que la primera capa es la imagen del sistema operativo, la segunda es la diferencia con la instalación de un paquete, la tercera con otro paquete distinto y así sucesivamente. De esta forma podremos ahorrar espacio en disco y reutilizar imágenes.

Para crear una imagen de un contendor vamos a escribir una “receta” de cómo crearlo, llamado Dockerfile (ref: https://docs.docker.com/engine/reference/builder/) . En este archivo de texto indicaremos como construir el contenedor paso a paso, de modo que Docker descargará los elementos que sean necesarios, instalará los paquetes que le indiquemos, copiará los archivos que le indiquemos y definirá el punto de entrada al proceso que le digamos. Una vez hecho esto el resultado serán un conjunto de imágenes que, superpuestas, generarán el sistema que nosotros hemos diseñado.

Una vez hecho esto, podremos instanciar esta imagen tantas veces como queramos. De hecho, la podemos dejar en un repositorio (público o privado) y hacer que una instalación de Docker de la otra punta del mundo lance nuestra aplicación con una sola línea de comandos, con la certeza de cómo se va a comportar.

Conceptos Doc Docker ker kerfil fil file e: Archivo que define como se debe generar la imagen que servirá como fuente para crear los contenedores. Doc Docker ker kerHu Hu Hub b: donde se almacenan las imágenes oficiales de distintos paquetes de software. Cuando generemos el Dockerfile y le digamos que genere un Docker a partir de una imagen, por defecto será aquí donde la vendrá a buscar. Podemos ir a hub.docker.com y buscar las imágenes que queramos.

Instalación de Docker y preparación del entorno

3

Título del documento: SO – Práctica 5 – Docker Documento del profesor

Autor: Pere Pons 01/10/2019

En la página https://docs.docker.com/install/ podremos encontrar las instrucciones para efectuar la instalación para nuestra plataforma (OSX, Windows y Linux). Al trabajar con Debian iremos directamente a https://docs.docker.com/install/linux/dockerce/debian/ y seguiremos los pasos de instalación.

Debemos acabar pudiendo lanzar $ sudo docker run hello-world

En este punto es donde empieza la práctica y donde empezaremos a aprender qué es y cómo funciona Docker.

3 – Enunciado de la práctica La práctica se dividirá en un conjunto de ejercicios que nos van a guiar en el aprendizaje de Docker. Cada ejercicio se deberá ubicar dentro de un directorio que se llamará ejercicio1, ejercicio2, etc..

Deberéis entregar: •

Una memoria descriptiva donde respondáis a las preguntas y expliquéis cómo lo habéis resuelto, así como los resultados obtenidos.

Ejercicio 1 – Dockerfile Obje Objetiv tiv tivos os Aprender que es el archivo Dockerfile Crear un dockerfile que genere un contenedor que ejecute un script que nos muestre la hora cada 5 segundos en un bucle infinito. 1. Debéis emplear la imagen de base: Alpine Linux (buscadla en DockerHub) 2. Nombre que tiene que tener la imagen: “showtime:v1” 3. Script a ejecutar: showtime.sh

Disp Dispon on onéis éis d de: e: •

4

Script a ejecutar.

Título del documento: SO – Práctica 5 – Docker Documento del profesor

Autor: Pere Pons 01/10/2019

Script showtime.sh: #!/bin/sh echo "Showtime.sh - DockerDemo" intervalo=2 if [ ! -z "$1" ]; then intervalo=$1 fi echo "Interval set to ${intervalo} seconds." echo "Launching" while [ true ]; do date sleep ${intervalo} done

Refe Refere re renci nci ncias as • • •

Best practices for writing dockerfiles: https://docs.docker.com/develop/developimages/dockerfile_best-practices/ Docker image: https://docs.docker.com/engine/reference/commandline/image/ Docker build: https://docs.docker.com/engine/reference/commandline/build/

Pre Pregun gun guntas tas a re respo spo spond nd nder er

• •

¿Cómo lo podemos hacer que la imagen contenga el sistema operativo actualizado al momento de la creación de esta? ¿Cuál es la diferencia entre RUN y ENTRYPOINT?

Ejercicio 2: Gestión de contenedores Obje Objetiv tiv tivos os • • •

Aprender a ver los estados de los contenedores, iniciarlos, detenerlos y eliminarlos. Acceder al Shell de los contenedores Verificar que el filesystem es volátil.

Disp Dispon on onéis éis d de e •

Imagen generada en el ejercicio 1

Tar Tareas eas a efe efectu ctu ctuar ar

5

Título del documento: SO – Práctica 5 – Docker Documento del profesor

• • • •

Autor: Pere Pons 01/10/2019

Lanzad una instancia de la imagen creada en el ejercicio 1 en foreground, y desde otro terminal detenedla. Asignad siempre un nombre a la instancia del contenedor. Lanzad una instancia en background. Mostrad que dockers están ejecutándose Mostrad qué dockers ya han acabado

Refe Refere re renci nci ncias as • • • •

Docker run: https://docs.docker.com/engine/reference/run/ Docker ps: https://docs.docker.com/engine/reference/commandline/ps/ Docker stop: https://docs.docker.com/engine/reference/commandline/stop/ Docker kill: https://docs.docker.com/engine/reference/commandline/kill/

Pre Pregun gun guntas tas a re respo spo spond nd nder er • • •

¿Cómo apagar un contenedor? ¿Puedo lanzar varias instancias de una misma imagen? ¿Cómo puedo hacer que un contendor al acabar su ejecución se elimine automáticamente? ¿qué me aporta?

Ejercicio 3: Acceso al contenedor y volatilidad del FS Obje Objetiv tiv tivos os • •

Acceder al Shell de un Docker Experimentar la volatilidad del sistema de ficheros.

Refe Refere re renci nci ncias as •

Docker exec: https://docs.docker.com/engine/reference/exec/

Disp Dispon on onéis éis d de e •

Imagen generada en el ejercicio 1.

Tar Tareas eas a ef efectu ectu ectuar ar • •

Iniciad un contenedor, acceded al shell (bin/sh) del contenedor y mostrad los procesos que se está ejecutando. Cread un archivo en la raíz del contenedor y reiniciad el contenedor. Id a buscar el archivo en el nuevo contenedor.

Pre Pregun gun guntas tas a re respo spo spond nd nder er

6

Título del documento: SO – Práctica 5 – Docker Documento del profesor

• •

Autor: Pere Pons 01/10/2019

Si yo quisiera que el archivo que he creado esté en los contenedores nuevos siempre con el mismo contenido, ¿cómo debería hacerlo? ¿Es cierto que un contenedor sólo puede ejecutar un proceso? Explícalo.

Ejercicio 4: Volúmenes y Variables de entorno Obje Objetiv tiv tivos os • •

Aprender lo que son los volúmenes y como montarlos. Ver como emplear variables de entorno para parametrizar los contenedores.

Disp Dispon on onéis éis d de e •

Script que debe ejecutarse (showLorem.sh)

#!/bin/sh echo "showLorem.sh - DockerDemo" intervalo=2 if [ ! -z "$1" ]; then intervalo=$1 fi echo "Interval set to ${intervalo} seconds." echo "Environment variable FILE_TO_READ=${FILE_TO_READ}" if [ ! -z "${FILE_TO_READ}" ]; then file_to_read=${FILE_TO_READ} else file_to_read="/tmp/loremipsum.txt" fi echo "Launching" while [ true ]; do cat ${file_to_read} sleep ${intervalo} done

Tar Tareas eas a efe efectu ctu ctuar ar •

• •

7

Crea una imagen nueva, empleando Alpine Linux, que ejecute un script que nos nuestre el contenido de un archivo cada 5 segundos. El archivo a leer deberá estar almacenado en la variable de entorno FILE_TO_READ. Si no existe esta variable de entorno mostrará el archivo /tmp/loremipsum.txt Verifica que el contenedor se inicia correctamente y da la respuesta esperada (Archivo no existe) Crea un volumen, montando un directorio de tu disco (del el host) en /shared del contenedor y pon un archivo de texto en el directorio compartido. Valida que se ve desde un shell del contenedor.

Título del documento: SO – Práctica 5 – Docker Documento del profesor

• •

Autor: Pere Pons 01/10/2019

Pasa una variable de entorno llamada FILE_TO_READ al Docker con el path absoluto al archivo compartido y valida que aparece en stdout del Docker que se está ejecutando. Entrad en el Shell del Docker y cread un archivo en el directorio que hemos montado y comprobad que en el host os aparece. Ya tenemos un espacio de almacenamiento no volátil !!.

Pre Pregun gun guntas tas a re respo spo spond nd nder er • • •

¿Podemos compartir un volumen entre varios contenedores? ¿Que riesgos entraña? Si movemos un contenedor a otro nodo de procesamiento, ¿que sucederá con los datos del volúmen?

Ejercicio 5: Nombres y redes Obje Objetiv tiv tivo o • •

aprender el mecanismo de apertura de puertos de Docker. Ver como actualizar el SO del Docker e instalar paquetes.

Vamos a crear un contenedor, con la distribución Alpine, que instale un servidor web lighttpd que al acceder a él nos muestre el dockerID . Cuando accedamos a 127.0.0.1:8080 debemos acceder al servidor http del contenedor y ver el Docker id del contenedor que nos contesta. Disp Dispon on onéis éis d de e • •

Dockerfile Pagina web

Tar Tareas eas a efe efectu ctu ctuar ar • •

Arrancar el Docker, de forma que se vea en el navegador la página web. Matar el contenedor y volver a cargar el navegador de la pagina web. ¿Qué sucede? ¿Por qué?

Pre Pregun gun guntas tas a re respo spo spond nd nder er





8

¿Podemos lanzar varios contenedores que sirvan webs diferentes (una web distinta cada contenedor) a la vez?. ¿Qué tendríamos que variar entre ellos para que funcionen de forma simultánea? Si se reinicia la máquina host, ¿en qué estado quedan los dockers que se estaban ejecutando?

Título del documento: SO – Práctica 5 – Docker Documento del profesor

Autor: Pere Pons 01/10/2019

Ejercicio 6: Swarm y servicios Obje Objetiv tiv tivos os • • •

Aprender que es un swarm, cómo arrancarlo y añadir otras máquinas al swarm Aprender a crear un servicio que nos garantice alta disponibilidad.

Disp Dispon on onéis éis d de e •

Imagen del Docker que muestra una web que has creado en el ejercicio 5

Refe Refere re renci nci ncias as • •

https://docs.docker.com/engine/reference/commandline/swarm/ https://docs.docker.com/engine/reference/commandline/service/

Tar Tareas eas a ef efectu ectu ectuar ar • • •

Crea un servicio que ejecute el servidor web del ejercicio 5. Verifica que tu servicio, si matamos el Docker que sirve la web, revive de forma automática y puedes seguir viendo la web. Verifica que si reinicias el ordenador el servicio web se inicia automáticamente.

Pre Pregun gun guntas tas a re respo spo spond nd nder er • • • •

9

Si tuvieras un swarm con varios nodos, ¿dónde se ejecutaría el contendor del servidor web? Si montaras la web en un volumen, y tuvieras varios nodos, ¿qué problema tendrías? Supón que tienes un swarm con 10 máquinas, ¿qué harías para que el servicio web pudiera aguantar más carga? ¿Cómo se distribuirán las peticiones entre los diferentes nodos?...


Similar Free PDFs