Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=1e82f2ae-df94-44c6-bc8b-48418c2ccb8c

Docker: Los 10 términos de que debes conocer para empezar a trabajar

Imagen ornamental, contenedor azul con los logos de Docker y campusMVP pintados como graffiti, elaboración propia

Generalmente se suele hablar de "Docker", a secas, para un montón de casuísticas diferentes sin más distinciones. Pero en realidad Docker no es un producto sino una empresa y según el contexto es más apropiado utilizar otra terminología más específica.

Así, cualquier artículo, vídeo, curso o recurso serio, aunque utilice Docker de manera genérica en muchos sitios como recurso de escritura, para evitar confusiones debería utilizar la terminología adecuada en sitios concretos.

En este breve artículo te facilito un listado de 10 nombres y conceptos que seguramente te vas a encontrar cuando leas artículos o noticias sobre Docker y que te conviene tener claros para no equivocarte. Y desde luego, si decides aprenderlo en serio, son términos que debieras tener meridianamente claros.

Vamos allá...

Productos de Docker

  • 1: Docker Desktop o Docker CE (Community Edition): se trata de un entorno de desarrollo y ejecución de contenedores basados en Docker que es gratuito y sencillo de utilizar. Es lo que debes instalar si vas a crear, testear, depurar, empaquetar y desplegar contenedores con Docker. No sólo eso, sino que desde hace un tiempo incluye también soporte para Kubernetes, por lo que te permite crear y depurar despliegues complejos utilizando esta tecnología de orquestación. Existen versiones específicas para Windows y Mac. En el caso de Windows te proporciona la capacidad de poder ejecutar contenedores nativos que trabajan sobre Windows en lugar de sobre *NIX. Incluye Moby, el daemon de Docker y herramientas adicionales. También dispone de una edición empresarial con características avanzadas adicionales, como una interfaz de diseño de aplicaciones, y varias cuestiones relacionadas con la gestión empresarial.
  • 2: Docker EE (Docker Enterprise Edition): plataforma para CaaS (Container as a Service), para hospedar contenedores en una plataforma certificada por la propia empresa Docker. Este producto no es gratuito. Permite desplegar tanto en la nube como en los sistemas propios de la empresa. Incluye una versión certificada de Docker, interfaces Web para administrar los contenedores, y soporte directo de la propia empresa. Desde noviembre de 2019, Docker EE ya no es un producto de Docker sino que fue adquirido por la empresa Mirantis que es la que presta ahora el servicio, ayudada por Docker.
  • 3: Docker Toolbox: se trata de un producto obsoleto (la recomendación es usar Docker Desktop), para permitir ejecutar contenedores Linux en MacOS y Windows. Docker Toolbox es para Windows anteriores a Windows 10 y usa Virtualbox como tecnología de virtualización para soportar contenedores Linux. Ninguno de los aspectos más avanzados (como contenedores Windows o LCOW) está disponible, así que deberías evitarlo.

Componentes básicos de Docker

  • 4: Moby: nombre que se le da actualmente al proyecto open source que es el motor de Docker. La diferencia con Docker Desktop/CE es que Docker CE/Desktop es un producto comercial con más cosas, mientras que Moby es tan solo el motor de Docker. Si tienes interés en personalizar el motor de Docker, en modificar su comportamiento o entender cómo está implementado, ahí es donde debes mirar.
  • 5: containerd: es lo que utiliza Docker desde su versión 1.11 y posteriores como motor de ejecución de contenedores. Moby usa containerd para ejecutar los contenedores. Es una herramienta de muy bajo nivel.
  • 6: runC: herramienta de línea de comandos para lanzar contenedores según la especificación OCI (Open Container Initiative). Se trata de una herramienta de bajo nivel que, en según qué escenarios, es utilizada por containerd.

Es importante que comprendas la relación entre Moby, containerd y runC. Moby es el motor de Docker con el cual interactuamos (a través de la CLI de docker) y que usa containerd para ejecutar y manejar los contenedores. A su vez, para crear y ejecutar los contenedores, containerd lanza y controla varias instancias de runC:

La imagen muestra de manera visual la relación existente entre Moby, containerd y runC

  • 7: Docker daemon: conocido también como dockerd sería la "parte servidora" de Docker. Cuando utilices la interfaz de línea de comandos (CLI) de Docker para gestionar tus contenedores, ésta se comunicará con Docker daemon para ello. Es importante notar que el daemon puede estar ejecutándose en otra máquina distinta de la que ejecuta la CLI, lo que nos permite gestionar contenedores de máquinas remotas. Por defecto la CLI y el daemon se comunican mediante una named pipe aunque también es posible usar TCP.

Distribuciones Linux específicas para Docker

  • 8: LinuxKit: distribución minimalista de Linux que contiene básicamente tan solo el Kernel de Linux (aprox 35MB). El objetivo de LinuxKit es permitir un subsistema de Linux que pueda ejecutar contenedores en entornos muy limitados como escenarios IoT (Internet der las cosas) o similares. No es, por supuesto, una distro Linux de uso general y además partes solo del Kernel y tienes que configurarla para cada escenario. Es lo que usa Docker Desktop/CE en Windows si habilitamos el modo LCOW (Linux Containers On Windows).
  • 9: Alpine: distribución de Linux pequeña que se usa como base para muchas imágenes de contenedores. No hay que confundirla con LinuxKit, la anterior: Alpine es un Linux de uso general, mientras que LinuxKit no.
  • 10: MobyLinux: distro propia de Linux, usada por Docker Desktop for Windows para ejecutar contenedores Linux en máquinas Windows. Es el Linux que ejecuta la máquina virtual "DockerDesktopVM" cuando tenemos Docker Desktop for Windows configurado para usar contenedores Linux.

Algunos recursos adicionales sobre Docker

Por si te apetece seguir indagando, aquí te dejamos algunos enlaces más a artículos nuestros y de otros que ahondan un poco más sobre la terminología y los conceptos básicos de Docker:

Eduard Tomás Eduard es ingeniero informático y atesora muchos años de experiencia como desarrollador. Está especializado en el desarrollo de aplicaciones web y móviles. Mantiene un conocido blog sobre desarrollo en .NET en general y ASP.NET MVC en particular. Colabora con la comunidad impartiendo charlas en formato webcast y en eventos de distintos grupos de usuarios. Puedes seguirlo en Twitter en @eiximenis. Ver todos los posts de Eduard Tomás
Archivado en: Herramientas

¿Te ha gustado este post?
Pues espera a ver nuestro boletín mensual...

Suscríbete a la newsletter

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.