Docker Containers José-Tomás Salvador Tendero Sales Engineer Manager jose-tomas.salvador@intersystems.com @jt_salvador
Quizá os suene Desarrollo.un día cualquiera de proyecto Podríamos volver a empezar? 3 InterSystems Corporation. All rights reserved.
Quizá os suene Despliegue.quién no lo ha comentado en mitad de una instalación He seguido el Manual al pie de la letra! 5 InterSystems Corporation. All rights reserved.
Quizá os suene Soporte ese ingeniero de soporte que oye por enésima vez No he tocado nada! 7 InterSystems Corporation. All rights reserved.
Quizá os suene Soporte o cuando somos los usuarios y en Soporte no pueden reproducir el problema 9 InterSystems Corporation. All rights reserved.
Quizá os suene Upgrade y ya con el sistema funcionando un tiempo, llega el momento del upgrade En el fondo es lo menos preocupante siempre hay expertos disponibles! 11 InterSystems Corporation. All rights reserved.
Docker Containers
Image Docker Web App InterSystems IRIS Apache Linux 13 InterSystems Corporation. All rights reserved.
Comparación con VMs 14 InterSystems Corporation. All rights reserved.
Conceptos básicos Imagen: Paquete software Estandarizado, Portable y Ejecutable Contenedor: Instancia de una imagen, con aislamiento y control en el uso de recursos durante su ejecución dentro del sistema host. 15 InterSystems Corporation. All rights reserved.
Docker Containers Creación y Ejecución de Imágenes (docker build docker run) Imágenes Docker Múltiples capas de solo-lectura Construidas manualmente o vía Dockerfile Construye tu propia imagen Basada en la imagen creada por InterSystems Añadir código de la App Añadir Licencia Resolver dependencias Dockerfile Configurar Create Docker Layer Docker Layer Docker Layer Docker Hub & Docker Store Pull Push Image Build Run 16 InterSystems Corporation. All rights reserved. Docker Client Docker Engine holds Images
Dockerfile FROM intersystems/iris:stable LABEL maintainer "user_admin@company.com" ENV TMP_INSTALL_DIR = "/tmp/install" ENV InstallScript = "install.scr" ENV InstallFile = "Util/Build.cls" ENV AppDir = "." ENV AppName = "widgetsdirect" ENV PasswordFile = "password.isc" RUN mkdir $TMP_INSTALL_DIR WORKDIR $TMP_INSTALL_DIR COPY $AppDir $TMP_INSTALL_DIR/$AppDir COPY license.key $ISC_PACKAGE_INSTALLDIR/mgr El Dockerfile definirá el entorno dentro del contenedor. El acceso a recursos como los interfaces de red y discos duros es virtualizado dentro del entorno, que está aislado del resto de tu sistema. Por esa razón hemos de mapear puertos al exterior y explicitar qué ficheros queremos copiar en ese entorno. La aplicación definida por el Dockerfile se comportará exactamente igual independientemente de dónde se ejecute. RUN (chmod -R a+rx $TMP_INSTALL_DIR ` $TMP_INSTALL_DIR/install.sh $TMP_INSTALL_DIR $InstallScript $InstallFile $AppDir $AppName $PasswordFile) EXPOSE 57772 1972 22 443 80 ENTRYPOINT ["/isc-main"] 17 InterSystems Corporation. All rights reserved.
Cómo funciona? Un contenedor asigna Porcentaje de CPU Memoria Almacenamiento Ancho de Banda Características El kernel del SO gestiona los contenedores Ejecución de Servicios (+ligero) frente a un SO completo Mejor utilización de recursos (menos inactividad, ) Arranque rápido < 1sec Fácil de empaquetar, compartir y enviar Fácil despliegue en nube pública o privada AWS, GCP, Azure, OpenStack, OpenShift, Cloudera, etc. 18 InterSystems Corporation. All rights reserved.
VOLUMES Docker & Storage 1 Versionado del Contenedor Container + mystdapp + AppEvolution $ docker commit 2 Shared Container Volume Or Data-Only Container $ docker run v /mydb $ docker run --volume-from Container1 3 Host Volume $ docker run v /myappdb:/db -v /:/mylinuxhostroot Tres formas de almacenar datos persistentes MyApp-v2 OS-MyApp-v1 Container 1 Container 2 - Managed by Docker Daemon Linux host Data-Only Container /boot /etc /usr /dev /opt MyApp Container /db /myappdb v2 - Separate from Container / - No data layers or snapshots (R&W) - Volume persists with Containers 19 InterSystems Corporation. All rights reserved.
Casos de Uso
Caso de Uso Simplificación de la Configuración Lo primero por lo que aboga Docker es por la simplificación de la configuración Gestión del pipeline de desarrollo La simplificación de la configuración tiene un gran impacto en la gestión del pipeline de desarrollo Productividad del desarrollador Aislamiento de Aplicación Consolidación del Servidor Capacidad de Depuración Multi-tenancy 21 InterSystems Corporation. All rights reserved.
Continous Integration & Continous Delivery con Contenedores 1 2 3 4 5 6 7 Developer pushes commits Source Code Repository Developers are notified Continuous Integration Service Image or Artefact Build Run Tests Push to Registry Deploy to Production 22 InterSystems Corporation. All rights reserved.
Demo 1 Primeros pasos
Demo 1 Primeros Pasos 24 InterSystems Corporation. All rights reserved.
InterSystems y Docker
Gestion PID 1 y durabilidad de la configuración isc-main Contenedor desconectable Gestión de interrupciones Redirección de logs Potente parametrización Antes del arranque Tras la parada Licencia Nombre de instancia Rutina Namespace etc. On Startup Before IRIS After IRIS On Exit --key --log --before --instance --routine --after --exit Dockerfile FROM intersystems/iris:stable LABEL maintainer "user_admin@company.com"... RUN (chmod -R a+rx $TMP_INSTALL_DIR.) EXPOSE 57772 1972 22 443 80 ENTRYPOINT ["/isc-main"] 26 InterSystems Corporation. All rights reserved.
Gestion PID 1 y durabilidad de la configuración Durable %SYS Durabilidad de la Configuración de Sistema cache.cpf cconsole.log %SYS database etc. WIJ JRNs etc. User credentials Security Settings Linux Host Consola Docker CLI userlx $> docker run --detach --name my-app-container \ env ISC_DATA_DIRECTORY=/IRIS/cconfig \ -v /fast-reliable-fs:/iris \ -v /myappdb:/db \ -p 5772:57772 \ --hostname myhost my-iris-app:v1 my-iris-app:v1 /DB /IRIS/cconfig %SYS /boot /etc /usr /myappdb /dev /opt /fast-reliable-fs/cconfig 27 InterSystems Corporation. All rights reserved.
Demo 2 Preservando la configuración de la instancia de InterSystems IRIS
Demo 2 Preservando la configuración ( durable %SYS) 29 InterSystems Corporation. All rights reserved.
Demo 3 Nuestra Aplicación en la nube
Demo 3 Nuestra aplicación en la nube 31 InterSystems Corporation. All rights reserved.
Gracias.