¿Qué es Docker?, Aprendiendo desde cero los comandos básicos de Docker

¿Qué es Docker?, Aprendiendo desde cero los comandos básicos de Docker
¿Qué es Docker?, Aprendiendo desde cero todo lo que debes saber
  • Autor de la entrada:
  • Categoría de la entrada:Entornos de Ejecución
  • Tiempo de lectura:11 minutos de lectura

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:

  1. 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
  1. 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 -
  1. 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.

  1. 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.

  1. 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

  • ¿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 instántanea.
  • 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.

ROSEPAC

Redactor Diario Ciberninjas. Curador Digital. 🔗 Telegram 👨‍💻 Twittter 🐦 Discord 🧰