Hay muchas razones, pero las razones más aplicables dependerán del tipo de organización de TI que tenga. ¿Es usted una tienda de desarrollo de integración ágil / continua, pero el desarrollo y las operaciones son dos funciones distintas? ¿Eres una tienda totalmente integrada donde el desarrollo y las operaciones se han integrado en varios grados en una estructura DevOps?
Creo que en ambos casos, Docker juega muy bien. Como mecanismo de administración de contenedores, Docker brinda facilidad de uso y consistencia a los Contenedores de Linux (LXC) utilizando una estructura de administración muy “similar a git”. Es accesible y en gran medida familiar para la mayoría de los administradores e ingenieros de desarrollo y operaciones.
También se integra bien en varios mecanismos de automatización y de integración continua (Jenkins, Salt, Ansible, Chef, Puppet y Vagrant). Docker hace que el ciclo de vida de una aplicación o sitio web sea coherente, independientemente de la distribución o el entorno de Linux (desarrollo, control de calidad o producción).
- ¿Dailymotion Cloud es caro para un sitio de intercambio de videos muy grande?
- ¿Cuál es una mejor tecnología, servicios web Python o Amazon?
- ¿Cómo sería la infraestructura de la nube si el lenguaje natural a través del habla y los chatbots se convirtiera en la interfaz dominante para las aplicaciones?
- ¿Qué es la virtualización y qué papel juega la virtualización en AWS?
- ¿Es difícil comparar el costo de múltiples nubes y tomar una decisión? ¿Cómo lo haces hoy?
Como resultado, terminas con las siguientes ventajas:
- Configuraciones de servidor consistentes
- Puede tener compilaciones de servidor Linux estándar y livianas, siempre que sean compatibles con Docker. Ya no está parcheando uno o cien servidores Linux con aplicaciones o configuraciones personalizadas. Está parcheando uno y lo está implementando en su infraestructura.
- Consistencia ambiental
- Una vez que un desarrollador completa una compilación (aplicación o sitio web o ambos), todo el contenedor se ‘registra’ y se puede implementar en otro entorno (QA por ejemplo). Nunca hay necesidad de verificar manualmente la configuración ya que no puede estar equivocada. El contenedor es exactamente el mismo y expone la misma funcionalidad / puertos que en el desarrollo cada vez.
- Automatización
- Puedo implementar / registrar / administrar / iniciar / reemplazar cada contenedor en un entorno completo con un solo trabajo de Jenkins o un libro de jugadas Ansible llamando a la imagen correcta.
- Solución de problemas
- ¿Un contenedor está actuando en producción? No me importa, ni necesito solucionarlo si puedo verificar que la imagen en sí funciona. Desconecto el contenedor de mal comportamiento y vuelvo a implementar todo en segundos.
- ¿Mi instancia de aplicación está comprometida / pirateada? Puedo desconectar esa instancia en un segundo, mostrando un reemplazo O UNA CONSTRUCCIÓN COMPLETAMENTE ACTUALIZADA con la mitigación en segundos, todo sin afectar en absoluto mi distribución subyacente de Linux.
- Conmutación por error
- ¿Perdí un centro de datos? Oh, está bien, dado que mi contenedor puede ejecutarse en cualquier distribución de Linux en cualquier servidor físico o virtual, solo implemento mis instancias en la nueva ubicación desde el concentrador o el repositorio local. Una vez que tengo un equipo de reemplazo y un sistema operativo base (cualquier distribución le importa, vaya a Windows si es necesario), implemento mi aplicación sin cambios.
Podría continuar, pero entiendes lo que digo. No, no trabajo para Docker, pero sí, lo he implementado en varias organizaciones y capacito a las personas sobre cómo hacer estas cosas en este momento. Docker no es una panacea para todas las situaciones anteriores, pero ciertamente es una cucharadita de azúcar que ayuda a bajar el medicamento.