Está en la página 1de 14

Práctica 4: Contenedores y

Bash Scripting Avanzado


para gestión de recursos
en Linux.
Guía y práctica de instalación de Docker
Desktop y configuración de container
Linux.

Introducción 3

Docker 3

Instalación y Configuración de Docker en Windows. 3


Descargar Docker Desktop Stable para Windows 10 3
Instalar Docker Desktop en Windows 10 3
Iniciar un contenedor en Docker Desktop en Windows 10 4

Instalación y Configuración de Docker en Linux. 10

Cuestionario 10

Taller 11
Descargando imagen de Docker de Ubuntu 11
Instalando programas en la imagen de Docker de Ubuntu 11
Bash Scripting en imagen de Docker de Ubuntu con Tmux 11
Bash Scripting Avanzado 12
Introducción

Esta guía sirve para instalar Docker Desktop para Windows con el objetivo de entender los
concepto básico de contenerización y armar un contenedor Linux totalmente portable para
realizar las prácticas de Bash Scripting con el File System propio de Unix sin importar el
Sistema Operativo base.

Docker

Instalación y Configuración de Docker en Windows.

Descargar Docker Desktop Stable para Windows 10

Descargar el instalador estable de Docker Desktop para Windows de su web oficial:


https://hub.docker.com/editions/community/docker-ce-desktop-windows/

Instalar Docker Desktop en Windows 10

Para instalar la última versión de Docker Desktop stable en Windows 10 es necesario tener la
última actualización estable del Sistema Operativo la cual al día de la fecha (Agosto 2020) es la
versión 15063+ para Windows 10 Pro/Enterprise y la versión 19018+ para Windows 10 Home.

Una vez que tenga la versión de Windows necesaria para instalar Docker Desktop stable inicie
el programa de instalación descargado.

Opcional:
Al terminar la instalación le pedirá reiniciar el sistema antes de hacer ésto instale el kernel de
Linux en WSL 2 siguiendo la siguiente guía:
https://docs.microsoft.com/es-es/windows/wsl/wsl2-kernel
Reinicie el sistema y verá que al iniciar se ejecutará Docker y quedará el ícono de configuración
en la barra de programas en segundo plano de abajo a la derecha. Si el ícono de docker está
en color rojo tuvo un problema en la instalación y deberá solucionarlo con la opción
Troubleshoot y la opción Run Diagnostics. Espere que termine el programa de diagnóstico y
siga los pasos que le indica en caso de problemas.

Haga clic en el icono de docker de la barra de tareas en segundo plano y haga clic en restart
para reiniciar todos los contenedor y el demonio de Docker, si aparece un cartel de advertencia
haga clic en reiniciar o aceptar, espere que Docker se reinicie.

Luego de reiniciar Docker si el ícono de la barra de tareas en segundo plano está en blanco
entonces Docker está corriendo exitosamente.

Iniciar un contenedor en Docker Desktop en Windows 10

Una vez que Docker está funcionando correctamente haga clic en el icono y haga clic en Check
For Updates para asegurarnos tener Docker actualizado antes de comenzar a utilizarlo.

Una vez actualizado Docker haga clic en el icono y haga clic en Dashboard. Al hacer clic en
Dashboard le debería aparecer una ventana con un comando en el centro que deberá copiar y
pegar en una terminal de Windows (símbolo del sistema). La imagen debería ser similar a la
siguiente:
El comando que nos pide ejecutar Docker en una terminal de Windows es:

docker run -d -p 80:80 docker/getting-started

Este comando sirve para correr nuestro primer contenedor docker, en este caso es solo un
contenedor de ejemplo llamado getting-started. Al correrlo en una terminal Linux empezará a
descargar los archivos necesarios para correr el contenedor localmente y nos pedirá permisos
de administrador. Al darle los permisos docker run debería terminar y mostrar en nuestra
consola Windows algo similar a lo siguiente:
Una vez terminada la ejecución del comando docker run vamos otra vez al ícono de docker y
vamos a dashboard, éste ves como tenemos al menos un contenedor Docker corriendo en
nuestro sistema nos debería mostrar el estado y nombre del mismo como muestra la siguiente
imagen:

Al hacer click en el contenedor en el dashboard nos mostrará:


● Una pestaña con una ventana de diálogo con los logs del contenedor
● Una pestaña con las características del contenedor.
● Una pestaña algunas opciones para ver estadísticas de uso de los recursos del
sistemas por parte del contenedor.
● Una opción para abrir el contenedor en el navegador (browser)
● Una opción para abrir el contenedor con una interfaz de línea de comandos (CLI).
● Una opción para detener la ejecución del contenedor. Esto puede ser útil en caso de
que nuestro sistema esté funcionando lentamente a causa de Docker.
● Una opción para reiniciar el contenedor. Esto puede ser útil en caso que nuestro
contenedor esté funcionando lentamente, se haya averiado o trabado.
● Una opción para borrar el contenedor.
Debido a que el contenedor de prueba de docker es un Linux mínimo nuestra CLI será Bash y
por ende podremos ejecutar comandos de bash como nano, desarrollar scripts de Bash y
ejecutarlos en el contenedor de Linux de Docker teniendo el File System propio de Unix y sin
afectar nuestro sistema Windows.

Al hacer clic en el ícono de abrir consola CLI nos abrirá una nueva ventana con el prompt de
una consola Linux donde podremos ejecutar comandos como ls, pwd y uname -a para verificar
qué sistema Linux estamos corriendo y donde estamos parados en el File System del
contendor Linux.
Dentro del contenedor puede hacer un ping 8.8.8.8 para verificar su conexión a internet y de
esta forma instalar cualquier programa que desee de Linux en el contenedor como por ejemplo
Tmux.

Si presta atención en la pestaña inspect en las características del contenedor que está
corriendo podrá notar al final que en la sección Port dice algo como 80/tcp localhost:80. Ésto
quiere decir que nuestro contenedor está escuchando en el puerto 80 de nuestro sistema nativo
y redirigiendo el tráfico al puerto ochenta del contenedor de Docker. Por esta razón es posible
ver los archivos del contenedor en nuestro navegador accediendo a localhost:80 (o haciendo
clic en el botón de see in browser del administrador de contenedores como se especificó
anteriormente).

Al ingresar al contendor con localhost:80 en nuestro navegador nos mostrará un mensaje de


inicio a Docker y algunas guías. Lea la guía principal de getting started y si desea lea el resto
de las guías para entender con más profundidad cómo funciona Docker.
Instalación y Configuración de Docker en Linux.

Para instalar Docker en Linux basta con ejecutar el comando:

apt install docker.io

Luego de instalar Docker es necesario habilitarlo y arrancar el demonio con los comandos:

systemctl start docker

systemctl enable docker

Para correr una imagen de Ubuntu en Docker con la terminal Linux simplemente hay que
ejecutar el comando:

docker run -it ubuntu

El comando anterior iniciará una imagen del contenedor de Ubuntu pero no nos otorgará
acceso al mismo. Para acceder con una CLI de Bash al contenedor creado primero debemos
saber el id de la imagen con el comando:

docker ps
Al ejecutar el comando docker ps nos listará las imágenes de contenedores activas y nos
mostrará su container id, lo copiamos y accedemos al contenedor con bash escribiendo el
comando:

docker exec -ti contaeiner_id bash

Docker

Con los siguientes comandos podrá gestionar sus contenedores desde una terminal Linux o
Windows:

docker images​ -> muestra las imagenes locales (ya descargadas) de Docker para iniciar
contenedores.
docker ps ​-> muestra los contenedores corriendo
docker star​t [container] -> corre uno o varios contenedores detenidos
docker stop​ [container] -> detiene la ejecución de un contenedor
docker rm​ [container] -> borra un contenedor

Cuestionario
1. ¿Qué son los contenedores, cómo funcionan y para qué sirven?
2. ¿Qué es Docker y para qué sirve? Investigue los comandos más utilizados y explique
para qué sirven.
3. Investigue que es DockerHub y para qué sirve. De al menos tres ejemplos de imágenes
muy utilizados de DockerHub y para qué sirven.
4. ¿Existen otros gestores de contenedores que no sean Docker? Justifique con ejemplos.
5. ¿El concepto de contenerización inició con Docker? Justifique.
6. ¿Qué diferencia hay entre una máquina virtual y un contenedor?
7. ¿Qué relación hay entre el Kernel (núcleo) del Sistema Operativo base y los
contenedores? ¿Se pueden ejecutar en una misma máquina varias máquinas virtuales
con distintos kernels? ¿Se pueden ejecutar en una misma máquina varios contenedores
virtuales con distintos kernels?
8. ¿Es posible hostear un sistema web o un motor de base de datos en un mismo
contenedor? ¿Puedo hostear un sistema web en un contenedor y conectarlo a un motor
de base de datos que esté corriendo en otro contenedor distinto? ¿Se puede acceder a
un sistema web corriendo en un contenedor desde afuera del mismo?
9. Investigue que es la portabilidad y qué relación tiene con los contenedores.
10. Investigue por qué la tecnología de contenedores es tan utilizada e importante en la
actualidad.
Taller

Descargando imagen de Docker de Ubuntu

Con el objetivo de correr un contenedor con Ubuntu completo y estable en Docker debemos
descargar dicha imagen y luego correrla como contenedor. Para realizar ésto debemos tener
conexión a internet y ejecutar el siguiente comando en una terminal (Windows o Linux):

docker run -it ubuntu

Al ejecutar el comando nos descargara la imagen completa para correr el contenedor de


Docker con Ubuntu y por haber ejecutado el comando con los parámetros -it nos abrirá una
terminal CLI con Bash una vez que esté descargada y corriendo la imagen.

Una vez dentro de la terminal debemos cambiar a Bash escribiendo bash y tocando enter.
Podremos verificar que estamos utilizando Bash ya que nos mostrará el nombre del usuario
(root) y el número identificador del contenedor en el prompt.

Instalando programas en la imagen de Docker de Ubuntu

Para comenzar a instalar programas de Linux en el contenedor con Bash primero debemos
ejecutar apt update y luego apt upgrade -y. Una vez finalizados los comandos de actualización
instalaremos las utilidades de red básicas como ping con el comando apt install iputils-ping y
luego instalaremos tmux con el comando apt install tmux y nano o vim con el comando apt
install nano o apt install vim.

Bash Scripting en imagen de Docker de Ubuntu con Tmux

Una vez instalados todos los programas básicos necesarios haremos un test de escritura y
ejecución de un script en Bash en el contenedor. Primero conviene dirigirnos a la carpeta home
del contenedor con cd y dentro de la misma crear una carpeta so y entrar. Una vez dentro de
/home/so ejecutamos tmux y partimos la consola en dos presionando las teclas control + b
soltando las teclas y presionando rápidamente las teclas shift + 2 (es decir el símbolo comillas
dobles “). Al partir la consola con tmux en la mitad superior creamos un archivo llamado test.sh
con el editor de texto que hayamos instalado (nano o vim) y escribimos un script que imprima
en pantalla una frase cualquiera. Una vez escrito el script guardamos el mismo y nos dirigimos
a la mitad de abajo de la consola partida con tmux presionando control + b soltando y
rápidamente presionando la flecha hacia abajo del teclado. Una vez posicionados en la mitad
de abajo de la consola le damos permisos de ejecución al archivo que acabamos de crear y lo
ejecutamos con bash. La imagen siguiente muestra cómo debería quedarnos la terminal de
nuestro contenedor si realizamos todos los pasos correctamente:

Bash Scripting Avanzado

Manejo del File System

1. Sistema de registro de archivos modificados


a. Investigue el comando stat y describa que imprime al ejecutarlo pasando un
archivo como parámetro.
b. Desarrolle un script que reciba como parámetro un directorio y archivo y vuelque
en el archivo pasado como parámetro la información del comando stat de cada
uno de los archivos en el directorio pasado por parámetro. En archivo resultante
deberá indicar la fecha de ejecución al principio del mismo.
c. Implemente la misma solución pero ordenando los archivos por fecha de
modificación.
2. Sistema de Backups:
a. Desarrolle un script que dados cuatro parámetros comprima todos los archivos
del directorio con path pasado como primer parámetro en el directorio del path
del segundo parámetro sólo si los archivos son más viejos que la cantidad de
días pasados como tercer parámetro y tienen en su nombre el substring pasado
como cuarto parámetro. El script debe escribir en un archivo de log su fecha de
ejecución y qué archivos comprimió.
b. Investigue qué es Cron y cómo funciona.
c. Cree un Cron para ejecutar un script en bash que solo escriba la fecha y hora en
un archivo de log. La tarea Cron debe ejecutarse cada 1 minuto y se deberá
corroborar en el archivo de logs la correcta ejecución del mismo.
d. Cree un Cron que ejecute el script de backup escrito en el inciso a. Corrobore su
correcta ejecución.

3. Sistema de monitoreo de procesos con interfaz web.


a. Investigue el comando ps y el comando sort.
b. Investigue cómo mostrar el uso de memoria de los procesos con el comando ps.
c. Investigue cómo mostrar el uso de procesador de los procesos con el comando
ps.
d. Desarrolle un script que cada 5 segundos escriba en un archivo pasado como
parámetro los procesos corriendo actualmente ordenados según su utilización de
memoria y en otro archivo pasado como segundo parámetro los procesos
corriendo actualmente ordenados según su utilización de cpu.
e. Modifique el script anterior para que los archivos de resultados escritos cada 5
segundos sean de la carpeta donde esté corriendo un servidor web como
apache o SimpleHTTPServer de Python. Asegúrese de poder ingresar con un
navegador a esos archivos y visualizarlos correctamente. Es posible realizar ésto
con docker corriendo una imagen de apache con el comando docker run -d -p
80:80 -it httpd. Una vez dentro de la carpeta apache podrá localizar los archivos
dentro del directorio htdocs y buscarlos con un navegador.

También podría gustarte