¬ŅC√≥mo aprender Docker? Desde cero hasta los comandos m√°s importantes

Una introducción a Docker conjunto a sus comandos más importantes, centrada sobre todo en los principiantes de Docker.

Otros Enlaces Interesantes: Preguntas y Respuestas sobre Docker / Enlaces de Entornos en la Nube / Cursos de Servicios en la Nube / Cursos Gratis de la Fundación Linux

A continuación, vas a encontrar los conceptos más básicos de Docker, la arquitectura de Docker, los contenedores de Docker.

¬ŅQu√© es Docker?

Docker es una plataforma de desarrollo de software para virtualizaci√≥n con m√ļltiples sistemas operativos que se ejecutan en el mismo host.

Docker ayuda a separar la infraestructura y las aplicaciones para entregar software r√°pidamente.

A diferencia de los hipervisores, que se utilizan para crear VM (máquinas virtuales) la virtualización en Docker se realiza a nivel de sistema, a esto también se le denominan contenedores.

Los contenedores de Docker se ejecutan en la parte superior del sistema operativo del host. Esto ayuda a mejorar la eficiencia y la seguridad.

Adem√°s, podemos ejecutar m√°s contenedores en la misma infraestructura que m√°quinas virtuales porque los contenedores utilizan menos recursos.

A diferencia de las m√°quinas virtuales que pueden comunicarse con el hardware del host (por ejemplo: Adaptador Ethernet para crear m√°s adaptadores virtuales) los contenedores Docker se ejecutan en un entorno aislado en la parte superior del sistema operativo del host.

Incluso si un host ejecuta el sistema operativo Windows, puedes hacer que las im√°genes de Linux se ejecuten sobre contenedores con la ayuda de Hyper-V.

Puesto que Hyper-V crear√° autom√°ticamente una peque√Īa m√°quina virtual para virtualizar la imagen base del sistema, en este caso, Linux.

¬ŅPor qu√© utilizar Docker?

Docker es un software de computadora que se utiliza para la virtualización con el fin de tener varios sistemas operativos ejecutándose en un mismo host.

Docker es del tipo de aplicación cliente-servidor, lo que significa que tenemos clientes que retransmiten al servidor.

Las im√°genes de Docker son el “c√≥digo fuente” de los contenedores que se utilizan para construir sobre ellos. Dockerfile tiene dos tipos de registros: 1. Registros p√ļblicos y 2. Registros privados.

Los contenedores son las unidades organizativas del volumen de Docker: En términos simples, una imagen es una plantilla y un contenedor es una copia de esa plantilla, se pueden tener varios contenedores (copias) de una misma imagen.

Arquitectura de Docker

Ahora, hablemos de los componentes principales dentro de la arquitectura de Docker.

Motor de Docker

Docker es un tipo de aplicación cliente-servidor, lo que significa que tenemos clientes que retransmiten su contenido al servidor.

Para ello, existe el demonio (proceso en segundo plano) de Docker denominado: dockerd. Dockerd, es el motor de Docker que representa al servidor.

El demonio de docker y los clientes se pueden ejecutar en el mismo host o en un host remoto y se comunican a través del binario del cliente, así como una API RESTful completa para interactuar con el demonio: dockerd.

Im√°genes de Docker

Las im√°genes de Docker son el “c√≥digo fuente” de los contenedores. Son usadas usamos para construir los contenedores y pueden tener software preinstalado que acelera la implementaci√≥n de un sistema.

Las im√°genes de Docker, son port√°tiles y se pueden utilizar las im√°genes ya existentes o bien, cada usuario puede crear sus propias im√°genes personalizadas.

Registros de Docker

Docker almacena las im√°genes que creamos en registros; existen los registros p√ļblicos y privados.

La empresa de Docker, tiene un registro p√ļblico llamado Docker hub, desde donde tambi√©n puedes almacenar im√°genes de forma privada.

En Docker Hub vas a poder encontrar millones de im√°genes, que puedes comenzar a utilizar en cualquier momento.

Contenedores Docker

Los contenedores son las unidades organizativas y uno de los conceptos m√°s b√°sicos e importantes de Docker. Cuando construimos una imagen y comenzamos a ejecutarla; estamos corriendo un contenedor.

La analogía del contenedor se utiliza debido a la portabilidad del software que tenemos en ejecución en nuestro contenedor.

Un contenedor podemos moverlo en cualquier momento, es decir, vas a poder “enviar” el software, modificarlo, administrarlo, crearlo, deshacerlo, o destruirlo; igual que los buques de carga hacen con sus pesados contenedores en los puertos de carga y descarga.

En términos simples, una imagen es una plantilla y un contenedor es una copia de esa plantilla, por lo tanto puedes tener varios contenedores (copias) de una misma imagen.

Existen varios comandos con los que trabajar con docker: docker, docker pull, docker run, pero ya veremos algunos de ellos m√°s adelante.

¬ŅC√≥mo instalar Docker en Linux / Ubuntu?

A continuación se muestra un proceso de instalación de Docker paso a paso en Linux / Ubuntu:

Primero: Para instalar Docker, necesitamos usar los paquetes DEB del equipo de Docker.

Para eso, vamos a necesitar algunos paquetes de Ubuntu pre instalados. Utiliza el siguiente comando para instalar paquetes de Ubuntu necesarios:

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

Segundo: Para agregar la clave GPG oficial de Docker como huella digital, vamos a usar el siguiente comando de Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Tercero: A continuación, tendremos que agregar el repositorio de Docker APT. Vamos a usar el siguiente comando de Docker para ello:

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Es posible que se le solicite que confirme que deseas agregar el repositorio y que la clave GPG se agregue automáticamente a tu host. El comando lsb_release debería completar la versión de distribución de Ubuntu de tu host.

Cuarto: Después de agregar la clave GPG. Deberemos actualizar las fuentes de la APT usando el clásico comando:

sudo apt-get update

En principio y hasta aquí, ya tendríamos el sistema preparado para la instalación del paquete de Docker.

Quinto: Una vez que ya hemos actualizado las fuentes APT. Comenzaremos a instalar los paquetes de Docker en Ubuntu, usando el siguiente comando de Docker:

sudo apt-get install docker-ce

Con este comando, se instala Docker y todos los paquetes adicionales necesarios. Hasta Docker 1.8.0, el nombre del paquete era lxc-docker y entre las versiones de Docker 1.13 y 1.8, el nombre del paquete era docker-engine.

NOTA IMPORTANTE : Se quieres instalar Docker en Windows, se requiere Windows 10 Pro o Enterprise versión 14393 o bien Windows Server 2016 RTM para realizar su ejecución.

¬ŅC√≥mo usar los comandos b√°sicos de Docker?

A continuación, se explica cómo utilizar Docker con los comandos más básicos de Docker.

Docker Info

El comando más básico que debemos ejecutar después de instalar Docker es docker info.

Con este comando, vas a recibir información sobre los contenedores de Docker, cuántos están en ejecución, en pausa o detenidos y cuántas imágenes se han descargado.

sudo docker info

Docker Alpine

Con el comando docker alpine le indicar√°s a Docker que descargue una imagen de Docker del sistema operativo: Alpine.

sudo docker pull alpine

Si a√ļn no conoces Alpine. Alpine Linux es un sistema operativo reducido, que incluye un paquete completo en solamente 5 MB de tama√Īo. Algunas grandes empresas, como por ejemplo, Amazon Web Services; trabajan e instalan Alpine dentro de sus instancias virtuales de AWS.

Si queremos ejecutar la imagen como un contenedor, usaremos el siguiente comando de Docker:

sudo docker run -i -t alpine/bin/bash

Si ejecutamos este comando, seremos enviados directamente a la terminal de Alpine.

El atributo -i mantiene abierto STDIN desde el contenedor, incluso cuando no estás conectado a él. Esta entrada estándar persistente es la mitad de lo que necesitas para tener un shell interactivo.

El atributo -t es la otra mitad y se encarga de indicar a Docker que asigne un pseudo-tty al contenedor. Esto, nos va a ofrecer la creación de un shell interactivo en el nuevo contenedor.

Si quieres salir del contenedor, como en muchas otras ocasiones desde la consola, ser√° suficiente con realizar un comando de exit.

Docker Ubuntu

Vas a poder observar que Docker busca la imagen localmente y si no está allí, la imagen se extrae de la biblioteca de imágenes automáticamente y una vez más, vamos a tener un shell interactivo en ejecución.

sudo docker start Nombre_Contenedor

También podemos nombrar los contenedores a medida que los ejecutamos.

Ejecutar Contenedor

Podemos ejecutar el contenedor que creamos previamente, sin un shell interactivo.

sudo docker run ‚Äď-name our_container -it ubuntu / bin / bash

Podemos detener el contenedor escribiendo docker stop Nombre_Contenedor.

sudo docker stop Nombre_Contenedor

Si queremos ver todos los contenedores en ejecución, simplemente ejecutamos:

docker ps

Para detener todos los contenedores arrancados, tenemos que agregar - a al final del comando, el resultado sería docker ps -a.

Este comando muestra la ID del contenedor, qué imagen se usa cuando se creó, el estado de ejecución, los puertos expuestos y el nombre generado aleatoriamente para el contenedor para facilitar la administración.

Cuando ejecutamos contenedores, también nos gustaría saber cuántos recursos están usando, y para ello podemos utilizar el comando.

docker stats

Puedes ver qué imágenes has descargado localmente e información sobre ellas con:

sudo docker images

El comando en el ejemplo de Docker anterior, te muestra la imagen de Docker con una etiqueta que muestra la versi√≥n de la imagen, un ID de imagen distintivo, cu√°ndo se cre√≥ y el tama√Īo de la imagen.

¬ŅQu√© es la virtualizaci√≥n?

Antes, el proceso de implementación de un servicio era lento y doloroso.

Primero, los desarrolladores escribían el código; luego, el equipo de operaciones lo implementaba en máquinas completas, donde tenían que buscar las versiones de bibliotecas, parches y compiladores de lenguajes para que el código funcionase correctamente.

Si se encontraban con errores, el proceso debía de comenzarse de nuevo, los desarrolladores tendrían que comenzar por arreglarlo antes de nuevamente, comenzar a implementar todo el proceso.

Con la creación de los hipervisores, se alcanzó una gran mejora.

Gracias a los hipervisores, en la actualidad se pueden tener varias m√°quinas virtuales o VM en un mismo host. Esas m√°quinas pueden estar ejecut√°ndose o apagadas.

El trabajo con las máquinas virtuales, ha reducido enormemente el tiempo de espera de la implementación del código y la corrección de errores.

Pero sin lugar a dudas, el trabajo con contenedores (como Docker) nos permite dar un paso m√°s all√°, a la hora del desarrollo.

Comandos m√°s importantes de Docker

A continuación se muestran algunos de los comandos más importantes de Docker:

Comando Descripción
docker info Comando de información
docker pull Descargar una imagen
docker run -i -t image_name /bin/bash Ejecutar imagen como contenedor
docker start Nombre_Contenedor Iniciar contenedor
docker stop Nombre_Contenedor Detener contenedor
docker ps Lista de todos los contenedores en ejecución
docker stats Información del contenedor
docker images Lista de im√°genes descargadas
docker cleanup Limpia todos los contenedores en funcionamiento

Resumen final

Finalmente vamos a resumir los aspectos m√°s importantes:

  • ¬ŅQu√© es Docker?: Docker es una plataforma de desarrollo de software para la virtualizaci√≥n de m√ļltiples sistemas operativos que se ejecutan en un mismo host; que ayuda a separar la infraestructura de las aplicaciones, para permitirnos entregar el software m√°s r√°pidamente.
  • La arquitectura de Docker se divide en: El motor de Docker, las im√°genes de Docker, los registros de Docker y los contenedores de Docker.
  • El motor de Docker: Docker es un software del tipo cliente-servidor, lo que significa que tenemos clientes que retransmiten al servidor. Entonces, el demonio de Docker denominado: dockerd. Es el motor de Docker que representa al servidor.
  • Las im√°genes de Docker: Las im√°genes de Docker son el “c√≥digo fuente” de nuestros contenedores y se utilizan para construir esos contenedores. Incluyen software preinstalado que acelera la implementaci√≥n, son port√°tiles y pueden utilizarse im√°genes existentes o de creaci√≥n propia.
  • Los registros de Docker: Docker almacena las im√°genes que creamos en registros, existen registros p√ļblicos y privados. La empresa de Docker tiene un registro p√ļblico llamado Docker Hub, donde tambi√©n se pueden almacenar im√°genes de forma privada. Docker Hub posee millones de im√°genes, que puedes utilizar de forma instant√°nea.
  • Los contenedores de Docker: Los contenedores son las unidades organizativas y uno de los conceptos b√°sicos de Docker.

Cuando construimos una imagen y comenzamos a ejecutarla, estamos corriendo en un contenedor. Se le denomina contenedor, gracias a la posibilidad de portabilidad del software en ejecución dentro de él.

Artículos Relacionados
‚Ė∑ Gu√≠a de Contenedores y Entornos en la Nube: Kubernetes, Docker, Webpack, AWS, Google Cloud, Azure, etc

Colecci√≥n de enlaces con los que aprender a manejar Kubernetes desde cero hasta nivel avanzado. Recursos Kubernetes Documentaci√≥n de Kubernetes A medias en espa√Īol, a medias en ingl√©s.. Kubernetes al completo (2020) Kubernetes al Completo - Curso de Youtube bastante extenso Kubernetes (2020) Kubernetes ¬°SEGUIR LEYENDO!

‚Ė∑ Monitorizaci√≥n ‚Äď Cap√≠tulo 4 (Libro SRE ‚Äď 8 de 32)

Escrito por Jess Frame, Anthony Lenton, Steven Thurgood, Anton Tolchanov y Nejc Trdin con Carmela Quinito. El monitoreo puede incluir muchos tipos de datos, incluidas métricas, registro de texto, registro de eventos estructurado, rastreo distribuido e introspección de eventos. Si bien todos estos enfoques ¡SEGUIR LEYENDO!

‚Ė∑ Curso de IoT industrial en Google Cloud

Aprende IoT a nivel industrial dentro de Google Cloud. √öNETE AL CURSO DE IOT INDUSTRIAL EN GOOGLE CLOUD *Curso exclusivamente en ingl√©s. CONOCE LOS CURSOS DE GOOGLE CLOUD EN ESPA√ĎOL Bienvenido a Industrial IoT en Google Cloud Este curso es una introducci√≥n a IoT ¬°SEGUIR LEYENDO!