Docker: una solución al transporte de aplicacionesAntonio José Sánchez 17 enero, 2014 Hasta principios del siglo XX, el transporte de mercancías por mar tenía algunos problemas de eficiencia: cada mercancía era embalada como interesaba al proveedor, en bultos de tamaños diferentes, lo que provocaba que los tiempos (y costes) de carga y descarga fueran elevados. Hacia finales de la Segunda Guerra Mundial el ejército estadounidense usó contenedores para acelerar la carga y descarga de los barcos de transporte, lo que reducía además el riesgo de robo de la mercancía. Estos contenedores eran reutilizables, estaban fabricados de acero rígido y tenían un volumen y carga máxima fijos. En 1955 el empresario Malcom McLean y el ingeniero Keith Tantlinger desarrollaron el contenedor moderno, diseñado para ser cargado eficientemente en los barcos mercantes y viajar con seguridad a través de los océanos. Fabricado de acero corrugado, tenía twistlocks (cierres de bayoneta) en las esquinas para ser levantado fácilmente por grúas. Tantlinger convenció a McLean para abrir las patentes industriales del contenedor, lo que llevó a su estandarización internacional durante los años 60. Los efectos sobre el sector fueron brutales. Los costes del transporte marítimo cayeron en picado, y se acortaron además los tiempos de tránsito. Los puertos que supieron adaptar sus infraestructuras crecieron rápidamente, en detrimento de los que no. Miles de estibadores perdieron su empleo, al dejar de ser necesaria su actividad. La industria auxiliar floreció al necesitarse barcos, grúas, trenes y camiones específicos para el transporte de contenedores. De hecho, puede decirse que el contenedor fue uno de los motores clave de la globalización. ¿Y qué tiene que ver esto con la informática? Hasta hace pocos años, el desarrollo de software no tenía serios problemas de “movilidad”. Los entornos de desarrollo, prueba, certificación y producción eran controlados la mayoría de las veces por un mismo responsable, que velaba por su consistencia. Los plazos de desarrollo eran relativamente largos, lo que permitía pasar a producción de forma procedimentada y ordenada. Los propios entornos (sistemas operativos, librerías, frameworks) eran bastante estables, lo que facilitaba los pasos de un entorno a otro de forma manual, casi artesanal. Sin embargo, desde principios de siglo la situación ha cambiado radicalmente. Por un lado, la adopción de metodologías ágiles y la cada vez mayor implicación de los desarrolladores en la operación de las plataformas han hecho que los pases a producción sean muy frecuentes, a veces constantes, haciendo obligatoria su automatización. Por otro, la explosión del cloud computing y los dispositivos móviles han provocado que los entornos, especialmente los productivos, sean cualquier cosa menos estables: el proveedor de servicios controla en muchas ocasiones el entorno en el que correrán las aplicaciones (es costoso modificarlo, o a veces imposible por restricciones técnicas o de licencia) y la demanda de los usuarios finales es difícil de prever, y obliga a escalar dinámicamente la capacidad. Para más inri, el futuro es multi-cloud, de forma que muchos entornos productivos deberán correr sobre varias infraestructuras diferentes, bien por motivos legales, rendimiento o fiabilidad. Las aplicaciones necesitan moverse de un lado a otro de forma rápida y segura. Necesitan su contenedor estándar. El nombre no es casual Docker (en inglés “estibador”) es un proyecto de código abierto para crear fácilmente contenedores ligeros, portables y autosuficientes. El objetivo es que el mismo contenedor que un desarrollador construye para escribir y probar una aplicación en su equipo pueda correr en producción a mayor escala, ya sea sobre máquinas virtuales, directamente sobre hardware, en clústeres OpenStack o clouds públicas. Para lograrlo, Docker extiende LXC (LinuX Containers), un método de virtualización ligero disponible desde 2008 en este sistema operativo que permite crear múltiples sistemas aislados o contenedores que corren en paralelo sobre la misma máquina anfitriona. Esto permite mayor flexibilidad y rendimiento, al no emularse una máquina virtual completa ni correr un sistema operativo íntegro dentro de ella, a costa de quedar “atado” al sistema operativo anfitrión, que se expone a las aplicaciones. El concepto de contenedor como espacio de usuario virtualizado y con un límite de recursos asignado no es nueva, y ha estado disponible desde 1998 en FreeBSD o desde 2005 en Solaris. Ni siquiera lo es en el cloud computing, al ser la tecnología tras los Virtuozzo Containers de Parallels, los dynos de Heroku o el SmartOS de Joyent (este último comercializado actualmente en España por Acens bajo el nombre Instant Servers). Docker empezó como un proyecto interno de Solomon Hykes en dotCloud, un proveedor PaaS (plataforma como servicio). Fue publicado bajo licencia abierta en marzo de 2013, y ganó mucha tracción en la comunidad. No sólo está integrado con la mayoría de herramientas de gestión y despliegue de infraestructura (como Chef o Puppet), sino con OpenStack (que incluye soporte nativo desde Havana) y con OpenShift, la iniciativa PaaS de Red Hat. Es decir, la industria auxiliar empieza a florecer: ya han aparecido incluso los primeros proveedores de “Docker as a Service”, como Stackdock, Orchard o Baremetal, mientras otros (como Rackspace o DigitalOcean) están adaptándose. Cabe preguntarse cuál será esta vez el gremio de estibadores si, como parece, Docker termina imponiéndose. Imagen: MorBCN
José Carlos Martín Marco Cinco consejos para mejorar la productividad personal en 2021 El comienzo de un nuevo año siempre es un buen motivo para reflexionar acerca de lo sucedido el año anterior y plantearse algunos propósitos de mejora. Creo que en...
Javier Martín García Modelos SDWAN gestionados y flexWAN como referente: las nuevas redes de datos Recientemente IDC Spain publicaba un estudio relativo a la tecnología SDWAN. A continuación recojo sus principales conclusiones y reflexiono sobre algunas de las cuestiones que se plantean, como el...
Javier Hurtado Ortiz Los seis perfiles más demandados en 2021 Con la llegada de Internet iniciamos una revolución digital sin precedentes. La pandemia ha acelerado esta transformación y los perfiles más demandados en 2021 tienen que ver con ello....
Mercedes Núñez La administración electrónica implica nuevas aptitudes “Un funcionario “funciona”, como una tostadora. En la era de la inteligencia artificial, si queremos diferenciarnos de los robots, tenemos que ser servidores públicos” Como señalábamos ayer, es un lujo...
Mercedes Núñez Entrevista a Víctor Almonacid: “La nueva normalidad en la nueva Administración” En la Administración no debemos volver a caer en el error de empezar la casa por el tejado e implantar proyectos increíblemente tecnológicos mientras todavía hay quienes se niegan...
Carmen Menchero de los Ríos Diez consejos para la transformación de alumnos en estudiantes Muchos artículos y trabajos académicos llaman la atención sobre la urgencia de transformar escuelas y universidades para que respondan a la nueva realidad que plantea el siglo XXI. Es...
Buenas, Lo que hace Docker son estructuras seguras y aisladas, similares a directorios, que utilizamos como componente de ejecución, donde se almacena una aplicación. Cada contenedor podemos ejecutarlo, iniciarlo, pararlo, moverlo y borrarlo. Además, cada uno consta de un sistema operativo, archivos de usuario y metadatos. A mi me parece muy muy interesante esto. Estoy haciendo un blog del tema por si os interesa echarle un ojo. http://www.rebadarti.com Un saludo Responder