¿Qué agrega Docker a simplemente LXC?

Docker no es un reemplazo para lxc. “lxc” se refiere a las capacidades del kernel de Linux (específicamente espacios de nombres y grupos de control) que permiten procesos de sandboxing entre sí y controlan sus asignaciones de recursos.
Además de esta base de bajo nivel de características del núcleo, Docker ofrece una herramienta de alto nivel con varias funcionalidades poderosas:

  • Despliegue portátil en máquinas. Docker define un formato para agrupar una aplicación y todas sus dependencias en un solo objeto que se puede transferir a cualquier máquina con Docker y ejecutar allí con la garantía de que el entorno de ejecución expuesto a la aplicación será el mismo. Lxc implementa sandboxing de procesos, que es un requisito previo importante para la implementación portátil, pero eso por sí solo no es suficiente para la implementación portátil. Si me envió una copia de su aplicación instalada en una configuración lxc personalizada, es casi seguro que no se ejecutará en mi máquina como lo hace en la suya, porque está vinculada a la configuración específica de su máquina: redes, almacenamiento, registro, distribución, etc. Docker define una abstracción para estas configuraciones específicas de la máquina, de modo que el mismo contenedor de Docker puede ejecutarse, sin cambios, en muchas máquinas diferentes, con muchas configuraciones diferentes.
  • Centrado en la aplicación . Docker está optimizado para el despliegue de aplicaciones , a diferencia de las máquinas. Esto se refleja en su API, interfaz de usuario, filosofía de diseño y documentación. Por el contrario, las secuencias de comandos auxiliares lxc se centran en los contenedores como máquinas livianas, básicamente servidores que se inician más rápido y necesitan menos ram. Creemos que hay más en los contenedores que solo eso.
  • Construcción automática . Docker incluye una herramienta para que los desarrolladores ensamblen automáticamente un contenedor a partir de su código fuente, con control total sobre las dependencias de la aplicación, herramientas de compilación, empaquetado, etc. Son libres de usar make, maven, chef, puppet, salt, debian paquetes, rpms, source tarballs, o cualquier combinación de lo anterior, independientemente de la configuración de las máquinas .
  • Versionado Docker incluye capacidades similares a git para rastrear versiones sucesivas de un contenedor, inspeccionar la diferencia entre versiones, confirmar nuevas versiones, retroceder, etc. todo el camino de regreso al desarrollador upstream. Docker también implementa cargas y descargas incrementales, similares a “git pull”, por lo que las nuevas versiones de un contenedor se pueden transferir solo enviando diferencias.
  • Reutilización de componentes . Cualquier contenedor se puede utilizar como una “imagen base” para crear componentes más especializados. Esto se puede hacer manualmente o como parte de una compilación automatizada. Por ejemplo, puede preparar el entorno ideal de python y utilizarlo como base para 10 aplicaciones diferentes. Su configuración ideal de postgresql se puede reutilizar para todos sus proyectos futuros. Y así.
  • Compartir Docker tiene acceso a un registro público (Repositorios de imágenes de Docker) donde miles de personas han subido contenedores útiles: cualquier cosa, desde redis, couchdb, postgres hasta gorilas irc, rails, servidores de aplicaciones, hadoop o imágenes base para varias distribuciones. El registro también incluye una “biblioteca estándar” oficial de contenedores útiles mantenidos por el equipo acoplable. El registro en sí es de código abierto, por lo que cualquiera puede implementar su propio registro para almacenar y transferir contenedores privados, por ejemplo, para implementaciones de servidores internos.
  • Ecosistema de herramientas . Docker define una API para automatizar y personalizar la creación e implementación de contenedores. Hay una gran cantidad de herramientas que se integran con Docker para ampliar sus capacidades. Despliegue tipo PaaS (Dokku, Deis, Flynn), orquestación de múltiples nodos (maestro, salt, mesos, openstack nova), tableros de administración (docker-ui, openstack horizon, astillero), gestión de configuración (chef, marioneta), integración continua (jenkins, strider, travis), etc. Docker se está estableciendo rápidamente como el estándar para herramientas basadas en contenedores.

Una buena de Stack Overflow

More Interesting

Me gustaría escanear mis dibujos dibujados a mano y usar una computadora para trabajar en ellos, ¿qué paquete de software sería mejor para mí?

¿Cuáles son las habilidades más importantes de un emprendedor TECH?

Estoy sobrecargado por los cursos y puedo reprobar algunas clases, pero ya acepté el puesto de SE en Microsoft. ¿Debo desertar a un Comp Science Minor?

¿Soy un mal ingeniero de software si no puedo implementar algoritmos de clasificación desde la parte superior de mi cabeza?

¿Es esencial una alta 'inteligencia emocional' para ser un buen gerente de ingeniería?

¿Por qué es importante el aseguramiento de la calidad del software?

¿Cuáles son algunas de las cosas excepcionales que debería hacer que impresionarían a las escuelas de posgrado de CS y a las compañías que ofrecen pasantías tecnológicas?

Si usted es un vendedor, ¿cómo explicaría el mercado API Mashup / Management?

¿Qué piensa sobre los hallazgos sobre el artículo y los resultados del "mayor elemento disuasorio para las mujeres en tecnología"?

¿Debo obtener un título en ingeniería de software si quiero una carrera en desarrollo de juegos?

¿Qué importancia tienen CodeChef o SPOJ para un estudiante de informática?

¿Qué temas se espera que los estudiantes de CS dominen cuando se gradúen?

A partir de 2016, ¿es más lucrativo entrar en el desarrollo de software o el comercio financiero?

¿Por qué algunas personas odian a Oracle?

¿Qué se espera de un ingeniero front-end en una empresa web de alta tecnología?