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

⚡ Resumen inteligente

Docker es una plataforma de contenerización que empaqueta aplicaciones y sus dependencias en contenedores portátiles y ligeros. Esta descripción general explica la arquitectura de Docker y su instalación en Ubuntucomandos esenciales y en qué se diferencian los contenedores de las máquinas virtuales tradicionales para una entrega de software más rápida.

  • ???? Contenedorización: Docker virtualiza a nivel del sistema operativo, por lo que los contenedores comparten el núcleo del sistema anfitrión y utilizan menos recursos que las máquinas virtuales.
  • 🧱 Architectura: El motor Docker (dockerd), las imágenes, los registros y los contenedores conforman la arquitectura cliente-servidor que sustenta cada flujo de trabajo de Docker.
  • 📦 Imágenes y contenedores: Una imagen es una plantilla de solo lectura, mientras que un contenedor es una copia en ejecución, y una imagen puede iniciar muchos contenedores.
  • 🗄️ Registros: Docker Hub almacena imágenes públicas y privadas, lo que te proporciona millones de imágenes listas para usar que puedes descargar y ejecutar.
  • ⚙️ Instalación: On Ubuntu Añade el repositorio APT de Docker y la clave GPG, y luego instala el paquete docker-ce con apt-get.
  • ⌨️ Comandos básicos: Gestiona contenedores con docker pull, run, start, stop, ps, stats e images desde la línea de comandos.

Tutorial de Docker para principiantes que cubre la arquitectura, la instalación en Ubuntuy comandos básicos de contenedores

Docker es una de las plataformas de contenerización más populares utilizadas en la actualidad. DevOps y flujos de trabajo en la nube. Este tutorial de Docker para principiantes explica qué es Docker, cómo funciona la arquitectura de Docker y cómo instalar Docker en Ubuntuy los comandos básicos utilizados para gestionar imágenes y contenedores.

¿Qué es Docker?

Docker Docker es una plataforma de desarrollo de software para virtualización que permite ejecutar múltiples sistemas operativos en el mismo host. Ayuda a separar la infraestructura de las aplicaciones para agilizar la entrega de software. A diferencia de los hipervisores, que se utilizan para crear máquinas virtuales (VM), Docker realiza la virtualización a nivel de sistema mediante unidades llamadas contenedores Docker.

Los contenedores Docker se ejecutan sobre el sistema operativo anfitrión, como se muestra en la imagen a continuación. Esto mejora tanto la eficiencia como la seguridad. Además, se pueden ejecutar más contenedores que máquinas virtuales en la misma infraestructura, ya que los contenedores consumen menos recursos.

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

A diferencia de las máquinas virtuales, que pueden comunicarse directamente con el hardware del host (por ejemplo, un adaptador Ethernet que crea 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, Tu puedes correr Linux imágenes dentro de contenedores con la ayuda de Hyper-V, que crea automáticamente una pequeña máquina virtual para virtualizar la imagen base.

Ahora que ya sabes qué es Docker, veamos las principales razones por las que los equipos lo eligen.

¿Por qué utilizar Docker?

Estas son las razones clave para usar Docker:

  • Docker es un software utilizado para la virtualización, que permite múltiples sistemas operativos para ejecutarse en el mismo host.
  • Docker es una aplicación cliente-servidor, lo que significa que los clientes se comunican con un servidor.
  • Las imágenes de Docker actúan como el "código fuente" de los contenedores; se utilizan para construirlos.
  • Docker admite dos tipos de registros: públicos y privados.
  • Los contenedores son las unidades organizativas de Docker. En términos sencillos, una imagen es una plantilla y un contenedor es una copia de esa plantilla, por lo que se pueden ejecutar varios contenedores a partir de la misma imagen.

Estas ventajas se derivan del diseño de Docker. La siguiente sección detalla la arquitectura de Docker y sus componentes principales.

Docker Architectura

Ahora, en este tutorial sobre contenedores Docker, vamos a analizar los componentes principales de la arquitectura Docker.

Docker ArchiComponentes de la arquitectura: motor, imágenes, registros y contenedores

Docker Architectura

Docker Engine

Docker es una aplicación cliente-servidor, lo que significa que tenemos clientes que transmiten solicitudes a un servidor. El demonio de Docker, llamado dockerd, es el motor de Docker que representa al servidor. El demonio y los clientes pueden ejecutarse en el mismo host o en uno remoto, y se comunican a través de un binario de cliente de línea de comandos y un intérprete de comandos completo. API RESTful que interactúa con dockerd.

Imágenes de Docker

Las imágenes Docker son el código fuente de nuestros contenedores; las usamos para crearlos. Las imágenes pueden tener software preinstalado, lo que acelera la implementación. Son portátiles y se pueden usar imágenes existentes o crear las propias.

Registros de Docker

Docker almacena las imágenes que creamos en registros. Hay registros públicos y privados. 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 de inmediato.

Contenedores Docker

Los contenedores son las unidades organizativas de Docker y uno de sus conceptos básicos. Cuando creamos una imagen y la ejecutamos, lo hacemos dentro de un contenedor. La analogía del contenedor se utiliza por la portabilidad del software que se ejecuta en su interior: se puede mover, transportar, modificar, gestionar, crear o destruir, del mismo modo que los buques de carga transportan 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.

La interacción entre estos diferentes componentes muestra cómo funciona en conjunto la tecnología de contenedores Docker. Comandos como `docker pull` y `docker run`, que veremos más adelante, permiten gestionar este flujo de trabajo.

Teniendo en cuenta la arquitectura, instalemos Docker para que puedas probar estos componentes por ti mismo.

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, necesitas los paquetes DEB del equipo de Docker. Primero, algunos requisitos previos Ubuntu Se requieren paquetes. Utilice el siguiente comando para instalarlos.

$ 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 su 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 APT de Docker utilizando el siguiente comando.

$ 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 Ubuntu versión de distribución de su host.

Paso 4) Después de agregar la clave GPG, actualice las fuentes APT utilizando el siguiente comando de Docker.

$ sudo apt-get update

Ahora puedes instalar el paquete Docker.

Paso 5) Una vez que se actualicen las fuentes APT, comience a instalar los paquetes Docker en Ubuntu utilizando el siguiente comando de Docker.

$ sudo apt-get install docker-ce

El comando anterior instala Docker y otros paquetes 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: Docker para Windows requiere Windows 10 Pro o Enterprise versión 14393, o Windows Servidor 2016 RTM, listo para ejecutar.

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

Aquí te mostramos cómo usar Docker con algunos comandos básicos.

El comando más básico que debes ejecutar después de instalar Docker es docker info, como se mencionó anteriormente.

$ sudo docker info

Deberías obtener un resultado similar al siguiente.

Utilice Docker con comandos básicos de Docker, mostrando la salida de docker info.

Como se muestra en el ejemplo de Docker anterior, podemos ver 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. Ahora obtengamos nuestra primera imagen.

$ sudo docker pull alpine

Con este comando, le estamos indicando a Docker que descargue la imagen alpine, extrayéndola del registro público en su última versión, que es la que viene configurada por defecto.

*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 un contenedor, utilizamos el siguiente comando.

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

Al ejecutar el comando, accedemos directamente a la terminal de Alpine. El parámetro -i mantiene la entrada estándar (STDIN) abierta desde el contenedor, incluso cuando no estamos conectados a él; esta entrada estándar persistente es fundamental para una shell interactiva. El parámetro -t es el otro elemento clave e indica a Docker que asigne una pseudo-tty al contenedor. Juntos, nos proporcionan una shell interactiva en el nuevo contenedor. Salimos del contenedor con un simple comando de salida.

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

$ sudo docker run -it ubuntu /bin/bash

Observa que Docker busca la imagen localmente y, si no la encuentra, la descarga automáticamente de la biblioteca de imágenes. Una vez más, tenemos una consola interactiva en ejecución. También podemos nombrar los contenedores a medida que los ejecutamos.

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

Luego salimos. También podemos ejecutar un contenedor que hayamos creado previamente sin una consola interactiva.

$ sudo docker start container_name

Y detenemos el contenedor escribiendo docker stop container_name.

$ sudo docker stop container_name

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

$ docker ps

Para todos los contenedores, añadimos “-a” al final del mismo comando, como por ejemplo docker ps -a. Este comando muestra el ID del contenedor, la imagen que utiliza, la fecha de creación, su estado de ejecución, los puertos expuestos y un nombre generado aleatoriamente para facilitar su gestión.

Cuando ejecutamos contenedores, a menudo queremos saber cuántos recursos están utilizando. Para ello, podemos usar el siguiente comando.

$ docker stats

También puedes ver qué imágenes has descargado localmente, junto con información sobre ellas.

$ sudo docker images

El comando del ejemplo de Docker anterior muestra cada imagen de Docker con una etiqueta que indica la versión de la imagen, un ID de imagen distintivo, la fecha de creación y el tamaño de la imagen.

Para comprender por qué los contenedores representan una mejora tan significativa, resulta útil analizar cómo evolucionó la virtualización.

¿Qué es la virtualización?

Antes, desplegar un servicio era lento y complicado. Los desarrolladores escribían el código y luego el equipo de operaciones lo desplegaba en máquinas físicas, donde debían estar pendientes de las versiones de las bibliotecas, los parches y los compiladores del lenguaje para que el código funcionara. Si surgían errores, el proceso volvía a empezar: los desarrolladores solucionaban el problema y el equipo de operaciones volvía a desplegarlo.

Las cosas mejoraron con la creación de hipervisores. Los hipervisores ejecutan múltiples maquinas virtualeso máquinas virtuales, en el mismo host, que pueden estar en funcionamiento o apagadas. Las máquinas virtuales redujeron enormemente el tiempo de espera para implementar código y corregir errores, pero el verdadero punto de inflexión fueron los contenedores Docker.

La popularidad de Docker también se debe a las herramientas de orquestación que gestionan contenedores a gran escala, como KubernetesAntes de continuar, aquí tienes una breve guía con los comandos más importantes de Docker.

Comandos importantes de Docker

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

Comando Mareas Ideales para Lecciones
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.

Lea también estos Preguntas y respuestas de la entrevista de trabajo de Docker Tanto para quienes se inician en el sector como para profesionales con experiencia.

Preguntas Frecuentes

Un contenedor Docker comparte el núcleo del sistema operativo anfitrión y aísla únicamente la aplicación, por lo que es ligero y se inicia en segundos. Una máquina virtual incluye un sistema operativo invitado completo, lo que la hace más grande, más lenta al arrancar y más intensiva en recursos.

Un Dockerfile es un script de texto plano que contiene instrucciones como FROM, RUN, COPY y CMD. Docker lee estas instrucciones para crear una imagen automáticamente. Cada línea añade una capa, lo que permite reproducir el mismo entorno en cualquier máquina.

Docker Compose define y ejecuta aplicaciones multicontenedor mediante un único archivo YAML. Solo tienes que describir cada servicio, red y volumen una vez, y luego iniciar todo con el comando `docker compose up`. Es ideal para el desarrollo local y las pruebas de servicios conectados.

Docker crea y ejecuta contenedores individuales, mientras que Kubernetes Kubernetes orquesta múltiples contenedores en un clúster. Además, incorpora escalado automático, autorreparación y balanceo de carga. En la práctica, Docker empaqueta la aplicación y Kubernetes la gestiona en producción.

Docker Engine es gratuito y de código abierto bajo la licencia Apache 2.0. Docker Desktop es gratuito para uso personal, educativo y para pequeñas empresas, pero las empresas más grandes necesitan una suscripción de pago. Docker Hub ofrece planes de alojamiento de imágenes tanto gratuitos como de pago.

Docker se ejecuta de forma nativa en Linux y es compatible con Windows y macOS a través de Docker Desktop. En Windows En Mac, Docker utiliza una máquina virtual ligera para ejecutar el kernel de Linux que requieren los contenedores. La mayoría de las imágenes de contenedores están basadas en Linux.

Los asistentes de IA generan Dockerfiles, archivos docker-compose y comandos de línea de comandos a partir de indicaciones en lenguaje natural. También leen los registros de compilación y los errores de los contenedores, explican la causa y sugieren soluciones. Siempre revise la configuración generada para verificar que las etiquetas de imagen, las rutas y la seguridad sean correctas antes de ejecutarla.

Sí. Copiloto de GitHub ChatGPT puede generar Dockerfiles y archivos Compose a partir de un breve comentario o descripción. Esto agiliza la creación de código repetitivo, pero conviene verificar las imágenes base, las versiones y las mejores prácticas, ya que los fragmentos generados pueden usar configuraciones predeterminadas obsoletas.

Resumir este post con: