Tutorial de Docker para principiantes: conceptos básicos, Architectura, Contenedores

¿Qué es Docker?

Docker es una plataforma de desarrollo de software para virtualización con múltiples sistemas operativos ejecutándose en el mismo host. Ayuda a separar la infraestructura y las aplicaciones para poder 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, también llamados contenedores Docker.

Como puede ver la diferencia en la imagen a continuación, los contenedores Docker se ejecutan sobre el sistema operativo del host. Esto le 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.

Virtualización en Docker vs Hipervisor
Virtualización en Docker vs Hipervisor

A diferencia de las máquinas virtuales que pueden comunicarse con el hardware del host (por ejemplo, un adaptador Ethernet para crear más adaptadores virtuales), los contenedores Docker se ejecutan en un entorno aislado sobre el sistema operativo del host. Incluso si su host ejecuta Windows OS, puede tener imágenes de Linux ejecutándose en contenedores con la ayuda de Hyper-V, que crea automáticamente una pequeña VM para virtualizar la imagen base del sistema, en este caso, Linux.

¿Por qué utilizar Docker?

  • Docker es un software informático que se utiliza para la virtualización con el fin de tener múltiples Los sistemas operativos ejecutándose en el mismo host
  • Docker es el 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 nuestros contenedores; los usamos para construir
  • 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. Puede tener varios contenedores (copias) de la misma imagen.

Docker Architectura

Ahora, en este tutorial del contenedor Docker, hablemos sobre los componentes principales de Docker en Docker. Architectura:

Docker Architectura
Docker Architectura

Docker Engine

Docker es el tipo de aplicación cliente-servidor, lo que significa que tenemos clientes que retransmiten al servidor. Entonces, el demonio Docker llamado: dockerd es el motor Docker que representa el servidor. El demonio acoplable 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 de línea de comandos, así como de una conexión completa. API RESTful para interactuar con el demonio: dockerd.

Imágenes de Docker

Las imágenes de Docker son el "código fuente" de nuestros contenedores; los usamos para construir contenedores. Pueden tener software preinstalado que acelera la implementación. Son portátiles y podemos usar imágenes existentes o crear las nuestras propias.

Registros de Docker

Docker almacena las imágenes que creamos en registros. Hay registros públicos y privados. La empresa Docker tiene un registro público llamado Centro acoplable, donde también puedes almacenar imágenes de forma privada. Docker Hub tiene millones de imágenes que puedes empezar a usar ahora.

Contenedores 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. La analogía del contenedor se utiliza debido a la portabilidad del software que ejecutamos en nuestro contenedor. Podemos moverlo, es decir, “enviar” el software, modificarlo, gestionarlo, crearlo o deshacernos de él, destruirlo, tal como lo pueden hacer los barcos de carga con contenedores reales.

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

A continuación tenemos una imagen que representa perfectamente la interacción entre los diferentes componentes y cómo funciona la tecnología de contenedores Docker.

Lo que tenemos son varios comandos de Dockers: Docker Pull, Docker Run... hablaremos más sobre eso. later.

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:

Paso 1) Para instalar Docker, necesitamos usar los paquetes DEB del equipo de Docker.

Para eso, se requieren algunos paquetes de Ubuntu previos.

Utilice el siguiente comando para instalar paquetes de Ubuntu

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

*el signo “\” no es necesario, se usa para la nueva línea, si lo deseas puedes escribir el comando sin usar “\” en una sola línea.

Paso 2) Agregue la clave GPG oficial de Docker con la huella digital.

Utilice el siguiente comando de Docker para ingresar la clave GPG

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

Paso 3) A continuación, agregue el repositorio Docker APT.

Utilice el siguiente comando de Docker para agregar el repositorio

$ sudo 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 desea agregar el repositorio y que la clave GPG se agregue automáticamente a su host.

El comando lsb_release debería completar la versión de distribución de Ubuntu de su host.

Paso 4) Después de agregar la clave GPG,

Actualice las fuentes de APT usando el siguiente comando de Docker

$ sudo apt-get update

Ahora podemos instalar el paquete Docker.

Paso 5) Una vez actualizadas las fuentes APT,

Comience a instalar los paquetes de Docker en Ubuntu usando el siguiente comando de Docker

$ sudo apt-get install docker-ce

El comando anterior instala Docker y otros paquetes adicionales necesarios. Antes de Docker 1.8.0, el nombre del paquete era lxc-docker, y entre Docker 1.8 y 1.13, el nombre del paquete era docker-engine.

NOTA: Ventana acoplable para Windows requiere Windows 10 Pro o Enterprise versión 14393, o Windows servidor 2016 RTM para ejecutar

Cómo usar Docker usando comandos básicos de Docker

A continuación se explica cómo usar Docker usando comandos básicos de Docker:

El comando más básico que debemos ejecutar tras instalar Docker es $docker info como decíamos anteriormente.

$ sudo docker info

Deberías obtener el similar o seguirwing resultado

Utilice Docker utilizando los comandos básicos de Docker

Como podemos ver en el ejemplo de Docker anterior, tenemos información sobre los contenedores de Docker, cuántos están en ejecución, en pausa o detenidos y cuántas imágenes hemos descargado. Entonces, obtengamos nuestra primera imagen en este tutorial de comandos de Docker.

$ sudo docker pull alpine

Con este comando le estamos diciendo a Docker que descargue la imagen alpina, que la extraiga del registro público, la última versión que está configurada de forma predeterminada.

*alpine es una imagen mínima de Docker basada en Alpine Linux con un índice de paquete completo y solo 5 MB de tamaño.

Si queremos ejecutar la imagen como contenedor, usaremos lo siguientewing comando en esta guía de tutoriales de Docker.

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

Si ejecutamos el comando, seremos enviados directamente a la terminal del Alpine. El indicador -i mantiene STDIN abierto desde el contenedor, incluso cuando no está conectado a él. Esta entrada estándar persistente es la mitad de lo que necesita para un shell interactivo. El indicador -t es la otra mitad y le indica a Docker que asigne un pseudo-tty al contenedor. Esto nos ofrece un shell interactivo en el nuevo contenedor. Salimos del contenedor con un simple comando de salida.

Ahora, en este tutorial básico de Docker, podemos intentar ejecutar una imagen de Ubuntu.

$ sudo docker run -it ubuntu /bin/bash

Puede notar que la ventana acoplable 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 tenemos un shell interactivo ejecutándose. También podemos nombrar los contenedores a medida que los ejecutamos.

$ sudo docker run –-name our_container -it ubuntu /bin/bash

y salimos de nuevo.

También podemos ejecutar el contenedor que creamos previamente, sin un shell interactivo.

$ sudo docker start container_name

Y detenga el contenedor escribiendo docker stop nombre_contenedor

$ sudo docker stop container_name

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

$ docker ps

Y para todos los contenedores agregamos “- a” al final de este mismo comando, como este docker ps -a.

Este comando muestra el ID del contenedor, qué imagen se utiliza 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, para ello podemos usar el comando.

$ docker stats

También puedes ver qué imágenes hemos descargado localmente e información sobre ellas.

$ sudo docker images

El comando en el ejemplo de Docker anterior muestra la imagen de Docker con una etiqueta que muestra nuestra versión de la imagen, una ID de imagen distintiva, cuándo se creó y el tamaño de la imagen.

¿Qué es la virtualización?

Anteriormente, el proceso de implementación de un servicio era lento y complicado. Primero, los desarrolladores escribían código; luego, el equipo de operaciones lo implementaría en máquinas básicas, donde tenían que buscar versiones de biblioteca, parches y compiladores de lenguaje para que el código funcionara. Si había algunos fallos o errores, el proceso comenzaba de nuevo, los desarrolladores lo arreglaban y luego nuevamente el equipo operativo estaba allí para implementarlo.

Hubo una mejora con la creación de Hipervisores. Los hipervisores tienen múltiples Maquinas virtuales o máquinas virtuales en el mismo host, que pueden estar ejecutándose o apagadas. Las máquinas virtuales redujeron en gran medida el tiempo de espera para implementar código y corregir errores, pero el verdadero cambio de juego fueron los contenedores Docker.

Comandos importantes de Docker

A continuación se muestran los comandos importantes de Docker:

Comando Descripción
información de la ventana acoplable Comando de información
estirar del estibador Descargar una imagen
ventana acoplable ejecutar -i -t nombre_imagen /bin/bash Ejecutar imagen como contenedor
ventana acoplable inicia nuestro_contenedor Contenedor de inicio
parada de ventana acoplable nombre_contenedor Detener contenedor
docker ps Lista de todos los contenedores en ejecución
estadísticas de la ventana acoplable Información del contenedor
ventana acoplable Lista de imágenes descargadas
Limpieza de la ventana acoplable Mata todos los contenedores en ejecución.

Además, lee Preguntas y respuestas de la entrevista de trabajo de Docker para profesionales más nuevos y experimentados.

Resumen

  • Docker es una plataforma de desarrollo de software para virtualización con múltiples sistemas operativos ejecutándose en el mismo host. Ayuda a separar la infraestructura y las aplicaciones para poder entregar software rápidamente.
  • Docker Architectura: Docker Engine, Imágenes Docker, Registros Docker, Contenedores Docker.
  • Motor acoplable: Docker es el tipo de aplicación cliente-servidor, lo que significa que tenemos clientes que retransmiten al servidor. Entonces, el demonio Docker llamado: dockerd es el motor Docker que representa el servidor.
  • Imágenes acoplables: Las imágenes de Docker son el "código fuente" de nuestros contenedores; los usamos para construir contenedores. Pueden tener software preinstalado que acelera la implementación. Son portátiles y podemos usar imágenes existentes o crear las nuestras propias.
  • Registros de Docker: Docker almacena las imágenes que creamos en registros. Hay registros públicos y privados. La empresa Docker tiene un registro público llamado Docker hub, donde también puedes almacenar imágenes de forma privada. Docker Hub tiene millones de imágenes que puedes empezar a usar ahora.
  • Contenedores 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. La analogía del contenedor se utiliza debido a la portabilidad del software que ejecutamos en nuestro contenedor.