Para esta práctica los que haremos será tomar como base una imagen de Ubuntu y actualizarla e instalarle algunos programas que necesitemos. Para ello, mostrará demostraremos como los contenedores al ser ejecutados, vuelven al estado original de la imagen y como a partir de una imagen que ha sido actualizada se puede crear una imagen nueva.
1. Descargar la imagen del sistema operativo Ubuntu 18.04

2. Ejecutar el contenedor de Ubuntu con el siguiente comando: docker run -it ubuntu:latest /bin/bash. Este comando lo que permite es ejecutar la imagen de Ubuntu pero con el comando -it (interactiva) y el parámetro /bin/bash se indica que se comunicará con la imagen por medio de la línea comandos bash de Ubuntu.

3. Actualizamos las dependencias de la imagen de Ubuntu por medio de la instrucción apt-get update


5. Y así sucesivamente se podría ir instalando todos los programas que necesitemos en nuestra imagen. Finalmente
salir de la consola de Ubuntu escribiendo exit.
Ahora, se debe tener claro cual es la funcionalidad que tiene una imagen, en este caso, la imagen de Ubuntu tiene como fin permitir la comunicación por medio de la consola de comandos, esto quiere decir que al dar escribir “exit” la ejecución del contenedor finaliza, de manera que todo lo que hayamos realizado con este contenedor se habrá perdido.
Si volvemos a escribir el comando: docker run -it ubuntu:latest /bin/bash y escribimos algún comando de git veremos que nos saldrá un error, esto es por que cada vez que se lanza el comando run, docker crea un contenedor totalmente nuevo a partir de la imagen indicada.

Si necesitamos por alguna razón salir del contenedor actual sin que finalice su ejecución, podemos hacerlo a través de la combinación de teclas Ctrl + P + Q.
Ahora veremos cómo crear una imagen nueva a partir de un contenedor que hemos estado actualizando.
6. Repetir los pasos descritos en los numerales del 1 al 4 o hasta tener las actualizaciones o configuraciones deseadas. Salir del contenedor sin finalizar su ejecución. Y ejecutar el comando: docker commit [id_contenedor_origen] [nombre de la nueva imagen]. Para nuestro caso sería algo como esto:

En la anterior imagen se aprecia como los comandos de git son reconocidos, y después se procede a salir del contenedor en ejecución (Ctrl + P + Q). Se listan los contenedores y vemos que el contenedor de Ubuntu se encuentra en ejecución.
Se procede a crear la nueva imagen a partir del actual contenedor, esto lo confirmamos al ver que docker nos entrega un SHA nuevo para identificar a la nueva imagen.
