ūüź≥ QU√Č es DOCKER y C√ďMO INSTALARLO ‚úÖ

Enviado por LT DATA el S√°b, 19/12/2020 - 21:41

ūüź≥ QU√Č es DOCKER y C√ďMO INSTALARLO ‚úÖ

¬ŅQu√© es Docker?

Hoy tratar√© de ense√Īarte qu√© es Docker, y adem√°s veremos un ejemplo pr√°ctico de instalaci√≥n en una m√°quina con ubuntu 18.04

La contenerización es una tecnología que nos permite ejecutar una aplicación de manera totalmente aislada a las demás aplicaciones de la máquina. Por poner un ejemplo, podremos instalar Apache Hive en un windows 10, a través de un contenedor sin que este sea compatible con la versión del sistema operativo. Además, está de moda, por lo que seguramente hayas oido hablar de DOCKER. Existen muchos más motores que permiten la contenerización, pero esta es la herramienta que más se utiliza en proyectos de producción para ello.

Docker es un proyecto que fue liderado en sus inicios por Solomon Hykes, en la empresa dotcloud y que en marzo de 2013 fue liberado como código abierto. Permite desplegar aplicaciones autocontenidas con todos los servicios necesarios para que la aplicación funcione. Además, esta aplicación definirá todas las dependencias que necesita para ser ejecutada. De esta manera te garantiza que tus aplicaciones funcinen igual independientemente de la máquina donde estés trabajando, ya sea windows, linux o mac.

Docker ofrece un modelo de implementaci√≥n basado en im√°genes, las cuales puedes crear o descargar de repositorios p√ļblicos. Existe uno en concreto, docker hub, en el cual podr√°s encontrar m√°s de cien mil imagenes distintas creadas por la comunidad.

La tecnología docker corre sobre el kernel de linux permitiendo que las funciones de este puedan ejecutarse de manera independiente

Seguramente hasta aquí seguramente no encuentres diferencias con la virtualización de máquinas. Es decir, tu también puedes descargarte máquinas virtuales con las aplicaciones deseadas y estas funcionarán correctamente en tu ordenador. Pues bien, ahora voy a comentarte alguna de las ventajas que tiene la contenerización sobre la virtualización de máquinas virtuales

Las m√°quinas virtuales necesitan montar un sistema operativo completo a√ļn que solo necesites desplegar una aplicaci√≥n en concreto. Adem√°s son pesadas y contienen muchas dependencias. Por lo cual el gasto de recursos es muy superior.¬†
Te pongo un ejemplo, si quisieras tener varias máquinas virtuales en el mismo ordenador, tendrías un monton de servicios repetidos.
Esto no pasa con Docker, ya que los contenedores necesitan muchos menos recursos que las máquina virtuales al realizan la virtualización dentro sistema operativo, 

Levantar una m√°quina virtual para probar t√ļ c√≥digo es algo muy lento y que te puede consumir bastante tiempo dependiendo de que Sistema operativo y aplicaci√≥n que quieras levantar.¬†
Docker se inicia rápidamente, además se caracteriza por su sencilla sintaxys, ser fácil de implementar y poder crear, copiar y mover los contenedores de un entorno a otro. Podemos resumir sus tres principales características como (portabilidad, ligereza y autosuficiencia)

Finalmente Docker te permitir√° tener muchos m√°s servicios corriendo en tu m√°quina con un gasto de recursos muy inferior.

Por destacar, una desventaja que juega en contra de Docker es que la curva de aprendizaje es bastante complicada al principio. 

Docker

¬ŅC√≥mo instalar Docker en Ubuntu 18.04?

A continuación lo que vamos a hacer es conectarnos por ssh a una máquina con ubuntu 18.04. Una vez hayamos hecho login como root podremos empezar con la instalación de Docker.

Para ello ejecutaremos los siguientes comando, los cuales os dejo aquí abajo para que podáis copiar y pegar. 

> sudo apt install docker.io

> sudo systemctl start docker
> sudo systemctl enable docker

> docker --version

> sudo systemctl status docker

El sitio web oficial de Docker no ofrece soporte para Ubuntu 18.04. Es posible que los repositorios predeterminados de Ubuntu no se hayan actualizado a la √ļltima revisi√≥n. No hay nada de malo en ejecutar esta instalaci√≥n. Sin embargo, si est√° preparado para una operaci√≥n un poco m√°s intensiva, puede instalar un Docker m√°s reciente (o espec√≠fico) desde los repositorios oficiales de Docker.

Ahora estamos listos para comprobar que docker funciona correctamente, para ello ejecutaremos 

> docker run hello-world

Tenemos que visualizar el mensaje 

Hello from Docker.
This message shows that your installation appears to be working correctly.

Ahora que tenemos todo configurado, ejecutaremos un contenedor llamado Busybox en nuestro sistema y probaremos el comando docker run.

Para empezar descargaremos el contenedor ejecutando

> docker pull busybox

El comando pull obtiene la imagen de busybox del registro de Docker y la guarda en nuestro sistema. Puedes usar el comando docker images para ver una lista de todas las im√°genes en tu sistema.

> docker images

Si has llegado hasta aquí, estás listo para ejecutar un contenedor Docker basado en esta imagen. Para hacer eso, usaremos el omnipotente comando docker run.

> docker run busybox

¬°Espera, no ha pasado nada! ¬ŅEso es un error? Bueno no. Detr√°s de escena, sucedieron muchas cosas. Cuando ejecutas docker run, el cliente de Docker encuentra la imagen (busybox en este caso), carga el contenedor y luego ejecuta un comando en ese contenedor. Cuando ejecutamos docker run busybox, no proporcionamos un comando, por lo que el contenedor se inici√≥, ejecut√≥ un comando vac√≠o y luego sali√≥. As√≠ que ahora vamos a intentar algo m√°s emocionante.

> docker run busybox echo "hello from busybox"

Bien, finalmente vemos algo de salida. En este caso, el cliente de Docker ejecutó diligentemente el comando echo en nuestro contenedor busybox y luego salió de él. habrás notado que todo esto sucedió muy rápido. Imagínese arrancar una máquina virtual, ejecutar un comando y luego matarlo. ¡Ahora sabes por qué dicen que los contenedores son rápidos! 
Ok, es el momento de ver el comando docker ps. El comando docker ps le muestra todos los contenedores que se est√°n ejecutando actualmente.

> docker ps

Como no se est√°n ejecutando contenedores, vemos una l√≠nea en blanco. Probemos una variante m√°s √ļtil:

> docker ps -a

Lo que se nos muestra ahora es una lista de todos los contenedores que hemos ejecutado. fijate que la columna ESTADO muestra que estos contenedores terminaron hace unos minutos.

Si te estás preguntando si hay alguna forma de ejecutar más de un comando en un contenedor. la respuesta es sí, te pongo un ejemplo, ejecuta 

> docker run -it busybox sh
> ls
> uptime
> exit

Ejecutar el comando run con los indicadores -it nos une a un tty interactivo en el contenedor. Ahora podemos ejecutar tantos comandos en el contenedor como queramos. en mi caso, antes de salir he ejecutado un ls y un uptime.

Para matar procesos

  • para que al cerrar el terminal no muera la sesi√≥n utilizaremos el comando -d¬†
  • si queremos matarlo despu√©s (docker ps, docker kill nombre_contenedor)

Os dejo un vídeo con un ejemplo práctico