¿Cuál es la diferencia entre Docker y LXC?
A partir de las capacidades de bajo nivel del kernel, Docker crea un conjunto de herramientas de nivel superior con varias características poderosas:
Implementación portátil entre máquinas: definición de Docker Una especificación para empaquetar un Aplicación en la que todas sus dependencias se encapsulan en un objeto simple que se puede transportar a cualquier máquina habilitada para Docker. Docker define una especificación para empaquetar una aplicación y encapsula todas sus dependencias en un objeto simple que puede transportarse a cualquier máquina habilitada para Docker, donde se puede iniciar una instancia de Docker para garantizar que el entorno de ejecución de la aplicación host sea exactamente igual al definido. ambiente. Si me envía una copia de una aplicación instalada en una configuración LXC personalizada, es casi seguro que no se ejecutará exactamente igual en mi máquina que en la suya, porque está sujeta a la configuración específica de su máquina de: red, almacenamiento, registro, distribución de Linux, etc. Docker define una capa de abstracción para estas configuraciones específicas de la máquina, por lo que permite que estos mismos contenedores Docker se usen de la misma manera, estos mismos contenedores Docker se pueden ejecutar en muchos hosts diferentes e incluso con varias configuraciones diferentes.
Centrado en aplicaciones. Docker se puede utilizar para optimizar el proceso de implementación de aplicaciones en comparación con las máquinas. Esto se puede ver en su API, UI, filosofía de diseño y documentación. En cambio, los scripts auxiliares de lxc se centran en el uso de contenedores como máquinas livianas, básicamente un grupo de servidores que arrancan más rápido y tienen menores requisitos de memoria. Creemos que la tecnología de contenedores es mucho más que eso.
Compilaciones automatizadas: Docker proporciona a los desarrolladores una herramienta para empaquetar automáticamente el código fuente en contenedores, brindándoles control total sobre las dependencias de sus aplicaciones, herramientas de compilación, servicios de empaquetado y más. Son gratuitos para usar make, maven, chef, puppet, salt, paquetes debian, paquetes rpm, paquetes fuente o cualquier combinación de los mismos, independientemente de la configuración de la máquina.
Control de versiones: Docker introduce una función similar a git para realizar un seguimiento continuo de las versiones de los contenedores, las diferencias entre versiones, los envíos de nuevas versiones, las reversiones, etc. Docker también implementa capacidades de carga y descarga incrementales similares a git pull, por lo que cambiar a una nueva versión de un contenedor solo requiere transferencias incrementales.
Reutilización de componentes. Cualquier contenedor se puede utilizar como "imagen base" para crear componentes más específicos. Esto se puede hacer manualmente o como parte de una compilación automatizada. Por ejemplo, puede preparar un entorno Python ideal y utilizarlo como imagen base para 10 aplicaciones diferentes. La configuración estándar de PostgreSQL que defina se puede reutilizar en todos los proyectos futuros. Espera, espera.
****Disfruta. Docker tiene acceso al registro público (/), y miles de personas en la industria han subido todo tipo de contenedores valiosos: desde redis, CouchDB y Postgres hasta irc Bouncers, servidores de aplicaciones Rails, Hadoop e incluso la imagen base. para múltiples distribuciones. El registro también incluye un "repositorio estándar" oficial que proporciona contenedores útiles mantenidos por el equipo oficial de Docker. El registro en sí es de código abierto, por lo que cualquiera puede implementar su propio registro privado para almacenar y distribuir contenedores privados, como los de los servidores de intranet.
Ecosistema de herramientas. Docker define una API para automatizar y personalizar la creación e implementación de contenedores. Esto ha dado lugar a que se integren muchas herramientas en Docker para proporcionar una funcionalidad ampliada.
Implementación tipo PaaS (Dokku, Deis, Flynn), coordinación de múltiples nodos (maestro, salt, mesos, openstack nova), panel de administración (docker-ui, openstack horizonte, astillero), administración de configuración (chef, puppet), integración continua (jenkins, cuerdas), etc. Docker está construyendo rápidamente un ecosistema de herramientas basadas en contenedores utilizándose a sí mismo como estándar.