LINUX

Herramientas de contenedor alternativas de Docker en 2021

herramientas alternativas de Docker

Docker es el sistema de gestión de contenedores de código abierto y gratuito más popular y ampliamente utilizado. Docker ayuda a crear, implementar y enviar aplicaciones de software en un entorno aislado; conocido como contenedor. Un contenedor contiene las bibliotecas, dependencias y configuraciones necesarias para que el paquete de software se ejecute y funcione correctamente.

En el pasado, Docker ha sido la única tecnología de contenedorización fácil de usar. Muchos proyectos se han presentado como una alternativa de Docker y competidores en el mercado durante los últimos años. Algunos de los comunes Alternativas a Docker en el mercado se enumeran a continuación.

1) Podman

Una buena alternativa de Docker en estos días es Podman, que es un motor de contenedor gratuito y de código abierto lanzado bajo la licencia Apache-2.0. Podman ayuda a crear, implementar y administrar imágenes y volúmenes de contenedores. Es un servicio sin demonios, lo que significa que no requiere ningún demonio centralizado en ejecución para administrar los contenedores y las imágenes.

En Podman, podemos administrar contenedores de usuarios root y no root. Pero de forma predeterminada, requiere ejecutarse como usuario root. Las líneas de comando de Podman son compatibles con las interfaces de comando de docker cli. Por lo tanto, alguien que esté familiarizado con la ventana acoplable puede usar fácilmente Podman.

Actualmente, solo está disponible en sistemas GNU / Linux, mientras que los clientes remotos están disponibles tanto para Windows como para Mac OS. Una característica adicional de Podman es que podemos generar fácilmente un archivo YAML compatible con Kubernetes basado en el contenedor en ejecución para que uno pueda ejecutar fácilmente los contenedores a través de Kubernetes.

Pros:

  • Podman es un servicio sin demonios, no requiere ningún demonio centralizado.
  • Se puede ejecutar tanto como usuarios root como no root.
  • Los usuarios de Docker pueden usar fácilmente Podman ya que los comandos son los mismos.

Contras:

  • El backend de Podman solo está disponible en distribuciones GNU / Linux.

2) LXC

Contenedores de Linux (LXC) es un tiempo de ejecución de contenedor de Linux de bajo nivel bien conocido y probado en batalla. Es un método de virtualización a nivel de sistema operativo para ejecutar múltiples sistemas Linux conocidos como contenedores usando una sola máquina host del kernel de Linux.

Con LXC, se puede obtener un entorno aislado cerca de una máquina virtual, pero sin la sobrecarga que conlleva ejecutar un kernel de Linux separado y simular el hardware. LXC se desarrolló y mantuvo antes que Docker. Pero como Docker era bastante fácil de usar, se volvió más popular e interesado en la comunidad.

Pros:

  • LXC es un tiempo de ejecución de contenedor de Linux de bajo nivel probado en batalla.
  • Es liviano y es mejor para ejecutar aplicaciones de software con uso intensivo de E / S.
  • Es adecuado para ejecutar múltiples sistemas Linux y es una buena alternativa a la virtualización tradicional basada en hipervisor.

Contras:

  • Como se mantiene principalmente para Ubuntu, LXC tiene soporte de funciones inconsistente en diferentes distribuciones de GNU / Linux.

3) Contenedor

Inicialmente, Contenedor comenzó como parte del proyecto de código abierto de Docker, pero luego comenzó como un proyecto independiente. Contenedor es un demonio simple y portátil que se utiliza para administrar el ciclo de vida completo del contenedor en la máquina host. Se utiliza para la supervisión de almacenamiento de bajo nivel en archivos adjuntos de red e incluso más en máquinas GNU / Linux y Windows.

La API de containerd facilita la gestión del entorno a través de llamadas a la API en lugar de llamadas al sistema. Actualmente, Containerd se considera el administrador de tiempo de ejecución de contenedores estándar de la industria y se utiliza en la orquestación de contenedores y la administración de contenedores en proyectos importantes como Docker, Kubernetes y más en los proveedores de nube populares. Es un robusto administrador de tiempo de ejecución de contenedores independiente de alto nivel y bien optimizado para poca memoria, bajos picos de CPU y bajo almacenamiento que minimiza los gastos generales para un mejor rendimiento.

Pros:

  • Contiene el administrador de tiempo de ejecución de contenedores estándar de la industria y cumple con OCI.
  • Está bien optimizado para memoria baja, picos de CPU bajos y mejor rendimiento con una sobrecarga mínima.
  • Se utiliza como un componente principal en Kubernetes, Docker y otros sistemas de orquestación de contenedores.

Contras:

  • Containerd tiene que ver con la gestión de contenedores, pero no se ocupa de las redes y otras cosas.

4) Cohete (rkt)

Rocket (también conocido como rkt) es un tiempo de ejecución de contenedor desarrollado por el proyecto CoreOS, que luego fue adquirido por Red Hat. Antes de CRI, Rocket era el único entorno de ejecución de contenedores que se creó para integrarse con el kubelet de Kubernetes. Es un tiempo de ejecución de contenedor de alto nivel, que proporciona capacidades de bajo nivel y puede ejecutarse sin un demonio. En Febrero de 2020, el proyecto rkt fue descontinuado y ya no se mantiene.

Pros:

  • Rocket puede ejecutarse sin un demonio.
  • Es compatible con sistemas init como systemd y upstart.

Contras:

  • El proyecto rkt se descontinúa y ya no se mantiene.

Tiempo de ejecución del contenedor

Tiempo de ejecución del contenedor es un bloque importante del ciclo de vida de un contenedor cuya responsabilidad principal es ejecutar y administrar contenedores en una máquina host. En términos generales, los tiempos de ejecución de contenedores se pueden clasificar en dos grupos principales en un espectro, son tiempos de ejecución de bajo nivel y tiempos de ejecución de alto nivel.

Kubernetes es un sistema de gestión de orquestación de contenedores y requiere una implementación de Container Runtime Interface para que Container Runtimes se comunique con Kubelet. Algunos de los tiempos de ejecución de contenedores populares compatibles con Kubernetes CRI son los siguientes.

CRI-O

CRI-O es un tiempo de ejecución de contenedor ligero y bien optimizado, desarrollado para Kubernetes como alternativa a Docker. Es una implementación de Kubernetes Interfaz de tiempo de ejecución del contenedor (CRI) para habilitar el uso de tiempos de ejecución compatibles con OCI. Tiene la capacidad de extraer de cualquier registro de contenedores.

CRI-O utiliza Runc y Kata Containers como los tiempos de ejecución de contenedor de bajo nivel predeterminados, pero en principio se puede utilizar cualquier tiempo de ejecución conforme a OCI.

Lectura sugerida: Cómo instalar Kubernetes en Ubuntu 20.04

rktlet

Rktlet es otra implementación de tiempo de ejecución de contenedor de la interfaz de tiempo de ejecución de contenedor de Kubernetes con Rocket (rkt). Utiliza rkt como el tiempo de ejecución del contenedor principal con Kubernetes. Todos los contenedores que se ejecutan con rktlet se ejecutan con rkt container runtime. Kubernetes (kubelet) se comunica con rktlet a través de gRPC. El CRI es la interfaz mediante la cual kubelet y rktlet se comunican entre sí. El proyecto rktlet ha sido descontinuado, por lo tanto, final de su vida útil (EOL).

Frakti

Frakti es un entorno de ejecución de contenedor ligero y portátil basado en hipervisor para Kubernetes. Permite a Kubernetes ejecutar y administrar pods y contenedores directamente dentro de los hipervisores con runV. HyperContainer es un tiempo de ejecución de la ventana acoplable independiente del hipervisor que se utiliza como contenedor de API en runV. Proporciona un aislamiento mucho más fuerte con cada pod con kernels independientes que los tiempos de ejecución de contenedores basados ​​en espacios de nombres de Linux.

Cuña CRI de Docker

Dockershim es una implementación de la interfaz de tiempo de ejecución del contenedor para la integración de Docker mediante Kubernetes. Kubernetes mantuvo Dockershim, pero recientemente se depreció. Nunca se pensó que se mantuviera durante un período prolongado, de ahí la palabra «calce». En realidad, se creó para ayudar a Docker a integrarse con Kubernetes, pero siempre terminó siendo un salto adicional, lo que llevó a Docker al desarrollo del tiempo de ejecución de Containerd, y ahora como parte de Open Container Initiative (OCI).

Recientemente, portuariohim está depreciado con la versión v1.20.0 de Kubernetes, a pesar de este cambio importante, no afecta a los desarrolladores finales ni a los ingenieros de DevOps, mientras que los operadores y administradores de sistemas que se encargan de la infraestructura subyacente de Kuberenetes pueden tener que cambiar de dockershim a otros tiempos de ejecución de contenedores que cumplen con CRI como CRI -O, contenedor, etc.

Conclusión

En el mundo de la contenerización, diferentes tecnologías están evolucionando a tiempo. En el pasado, fue Docker quien introdujo el poder de los contenedores en las aplicaciones de software a la comunidad. No teníamos muchas opciones con el administrador de contenedores y la orquestación, Docker era el único paso para DevOps y la tecnología de contenedorización. Pero las cosas han cambiado en los últimos años, hay varios sistemas y alternativas de docker o que funcionan en la tecnología de docker y contenedor. Si tiene alguna pregunta, sugerencia o comentario, escríbalos en el cuadro de comentarios a continuación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar