Hemos estado siguiendo el proyecto de contenedores desde el
principio . Por lo tanto, no podemos ignorar un evento significativo: anoche, la organización CNCF detrás de Kubernetes y otras soluciones destacadas de código abierto para el mundo nativo de la nube
anunciaron su "graduado". Este proyecto ya era el quinto con este estado, uniéndose a las filas de K8, Prometheus, Envoy y CoreDNS.

Criterios de CNCF
CNCF, que actualmente apoya docenas de proyectos de código abierto, ha
adoptado tres categorías para su clasificación:
- Sandbox ("sandbox"): para los desarrollos más tempranos , experimentales pero prometedores que (en el futuro) "agreguen el valor de la misión CNCF", es decir contribuirá al desarrollo del ecosistema de código abierto y la comunidad formada alrededor de la infraestructura para aplicaciones nativas de la nube modernas. Hay 12 proyectos de este tipo.
- Incubación ("incubadora"): para proyectos que tienen al menos tres usuarios (documentados e independientes) en producción, dentro de los cuales se proporcionan niveles y escalas de calidad suficientes (según el comité técnico), además de tener un número adecuado de contribuyentes con bit de compromiso y Desarrollo estable de la base del código. Hay 15 de ellos.
- Graduación : para proyectos con encargados de al menos dos organizaciones, una insignia de cumplimiento con las mejores prácticas de CII (Iniciativa de Infraestructura Central), adoptada por el Código de Conducta de CNCF , un esquema de gestión y aceptación claramente definido, una lista pública de usuarios y, por supuesto, un positivo El resultado de la votación correspondiente del comité técnico del CNCF. Ahora hay 5 de ellos.

En resumen, la preparación del proyecto para "lanzamiento" en CNCF se formula como su "adaptación, originalidad, proceso de gestión formal de rápido crecimiento y un compromiso estricto con una comunidad sostenible e inclusiva". Ahora se reconoce que el
contenedor , que Docker transfirió a CNCF hace casi 2 años, cumple con estos criterios.
contenedor: orígenes y presente
El proyecto en contenedores se remonta a la época en que los
árboles Docker eran grandes. En 2015, sus desarrolladores anunciaron que era hora de hacer que Docker Engine fuera más compacto (rápido, confiable, portátil ...) y, por lo tanto, comenzaron
a llevar sus componentes a proyectos separados .
Todo
comenzó con el anuncio de la herramienta de lanzamiento de contenedores runc (2015), luego apareció el tiempo de ejecución de contenedores para contenedores (2016), y un año después esta iniciativa se hizo aún más global y
nos trajo a Moby .
Ilustración para el lanzamiento de Docker 1.11 (abril de 2016): Docker Engine y componentes eliminadosDe vuelta a contenedor. En resumen, su función funcional se redujo
(y esto no ha cambiado hasta el día de hoy) al hecho de que, como demonio en el sistema host, administró todo el ciclo de vida del contenedor: desde recibir y almacenar la imagen hasta lanzar el contenedor (a través de la runc ya mencionada) y controlando su trabajo. En marzo de 2017, un año después de la separación del contenedor,
Docker lo transfirió a CNCF , lo que sucedió
simultáneamente con una iniciativa similar de CoreOS llamada
rkt (volveremos a él) .
Otros desarrollos incluyen la
aparición y el desarrollo (liderado por Red Hat) de un competidor orientado a Kubernetes llamado CRI-O * ... y la "respuesta" reflejada de Docker Inc como
cri-container .
Se usó un demonio especial (homónimo) para interactuar con los K8 en cri-containerd, y en la versión 1.1 la solución se
convirtió en un complemento para el nuevo entorno de tiempo de ejecución de contenedores de Kubernetes - Container Runtime Interface (CRI) - y aquí el complemento se comunicó directamente con containerd ( llamando a las funciones necesarias).

En junio de 2018,
se anunció que el complemento CRI contenedor estaba listo para la producción. El repositorio actual del proyecto es
containerd / cri .
* Es interesante notar que la solicitud presentada en noviembre de 2018 para la inclusión del competidor containerd y rkt - CRI-O - en proyectos de CNCF aún no ha sido aprobada por la organización.Hoy, containerd se llama indiscretamente "un entorno de contenedor ejecutable que es un estándar de la industria y se enfoca en la simplicidad, confiabilidad y portabilidad":

La arquitectura real de las soluciones de contenedor que usan containerd
(en su mayor parte, por supuesto, se centran en Kubernetes, pero formalmente no se limitan a esta plataforma) , aparece de la siguiente manera:

La solución en sí
viene en forma de demonio para Linux (se
recomiendan las versiones 4.x del kernel, aunque son posibles las opciones con versiones anteriores) y Windows. El código fuente está escrito en Go (se requiere la versión 1.9.x +).
La última versión de containerd es
1.2.4 (fechada el 14 de febrero de 2019) , donde se
corrigió la
vulnerabilidad CVE-2019-5736 en runc. El próximo hito es la
versión 1.3 , donde se esperan innovaciones como
grupos de contenedores ,
optimización del rendimiento para la operación de extracción de imágenes, varias mejoras en el trabajo con instantáneas y
otras .
El proyecto cuenta con más de 3500 estrellas en GitHub, 14 comisionados y 166 contribuyentes de compañías (excepto Docker, por supuesto) como
Alibaba , Facebook, Google,
Huawei , IBM, Microsoft, NTT, Tesla. Se pueden ver más estadísticas de base de código en
DevStats .
Entre los
usuarios destacados de contenedores
, es suficiente mencionar a Moby y proyectos relacionados (LinuxKit, BuildKit), Google Cloud Services (GKE), Microsoft (acs-engine en Azure y en el futuro AKS), IBM (IKS, ICP) y Alibaba, soluciones de contenedores / motores (Rio de Rancher, Kata Containers, Balena), así como incluso el reciente
Firecracker .
Sobre competidores
Finalmente, vale la pena decir que el ritmo de desarrollo de rkt, un análogo de containerd, incluido en CNCF aproximadamente al mismo tiempo, es significativamente menor. Es suficiente para indicar que su último lanzamiento, v1.30.0, tuvo lugar hace casi un año (en abril de 2018).
Hay conclusiones lógicas desde una perspectiva comercial: hace aproximadamente un año, el desarrollador original de rkt, CoreOS,
fue adquirido por Red Hat. Y el último
(o es más correcto decir que ahora IBM ya tiene ...) , como se menciona en el material, tiene su propia creación, cri-o, cuyas actividades son
mucho más activas .
Sin embargo, si bien el gigante de Linux no ha logrado "introducir" su proyecto en CNCF, quizás las palabras sobre el contenedor como estándar de la industria suenen muy creíbles.
PS
Lea también en nuestro blog: