Ing. Eduardo Castro, PhD
PASS Board of Directors
eduardo.castro@sqlpass.org
•Introducción a Docker
•SQL Server en escenarios de Docker
Agenda
Contenedores
Por qué contenedores
¿Qué es Docker?
El reto
API endpoint
Static website
nginx 1.5 + modsecurity + openssl + bootstrap 2
User DB
postgresql + pgv8 + v8
Analytics DB
hadoop + hive + thrift + OpenJDK
Web frontend
Ruby + Rails + sass+ Unicorn
Queue
Redis + redis-sentinel
Background workers
Python 3.0 + celery + pyredis + libcurl + ffmpeg + libopencv + nodejs + phantomjs
Python 2.7 + Flask + pyredis + celery + psycopg + postgresql-client
Development VM
QAserver
Public Cloud
Disaster recovery
Contributor’s laptop
Production Servers
Multiplicityof
Stacks
Multiplicityof
hardware
environments
Production Cluster
Customer DataCenter
Doservicesand
appsinteract
appropriately?
CanImigrate
smoothlyand
quickly?
La Matrix del infierno
Static website ? ? ? ? ? ? ?
Web frontend ? ? ? ? ? ? ?
Background workers ? ? ? ? ? ? ?
User DB ? ? ? ? ? ? ?
Analytics DB ? ? ? ? ? ? ?
Queue ? ? ? ? ? ? ?
Development
VM
QA Server
Single Prod
Server
Onsite
Cluster
Public Cloud
Contributor’s
laptop
Customer
Servers
Transporte de carga en 1960
DoIworryabout
howgoodsinteract
(e.g.coffeebeans
nexttospices)
CanItransport
quicklyandsmoothly
(e.g.fromboatto
traintotruck)
También una matriz del infierno
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
El ecosistema de contenedores de transporte
intermodal
• 90% de todo el cargamento ahora se envía en un contenedor estándar
• Orden de la reducción de la magnitud en coste y tiempo para cargar y descargar los barcos
• Reducción masiva de pérdidas por robo o daño
• Gran reducción en el costo de flete como porcentaje de bienes finales (de > 25% a < 3%)
• globalización masiva
• 5000 buques entregan 200 m contenedores por año
Solución: contenedor de envío intermodalMultiplicityof
Goods
Multiplicityof
methodsfor
transporting/stori
ng
DoIworryabout
howgoodsinteract
(e.g.coffeebeans
nexttospices)
CanItransport
quicklyand
smoothly
(e.g.fromboatto
traintotruck)
…in between, can be loaded and
unloaded, stacked, transported
efficiently over long distances, and
transferred from one mode of
transport to another
A standard container that is
loaded with virtually any goods,
and stays sealed until it reaches
final delivery.
Docker es un sistema de contenedor de envío
para el código
Static website User DB Web frontend Queue Analytics DB
Development
VM
QAserver Public Cloud Contributor’s
laptop
Multiplicityof
Stacks
Multiplicityof
hardware
environments
Production
Cluster
Customer Data
Center
Doservicesand
appsinteract
appropriately?
CanImigrate
smoothlyand
quickly
…that can be manipulated using
standard operations and run
consistently on virtually any
hardware platform
An engine that enables any
payload to be encapsulated as
a lightweight, portable, self-
sufficient container…
Docker elimina la matriz del infierno
Static website
Web frontend
Background workers
User DB
Analytics DB
Queue
Development
VM
QA Server
Single Prod
Server
Onsite
Cluster
Public Cloud
Contributor’s
laptop
Customer
Servers
• La tecnología de contenedores ha existido por un tiempo
(LXC, Solaris Zones, BSD Jails)
• Analogía: los contenedors de envío no son solamente
cajas de acero
• Con Docker, los contenedors del nivel bajo consiguen lo
siguiente:
• Componentes reutilizables
• Capacidad para ejecutar en cualquier servidor Linux de hoy: física,
virtual, VM, Cloud, Open, ++ +
• Capacidad de moverse entre cualquiera de los anteriores en
cuestión de segundos-sin modificación o demora
• Capacidad de compartir componentes en contenedor
• Entorno autónomo — sin dependencia del infierno
• Herramientas para la forma en que los contenedores trabajan
juntos: vinculación, anidación, descubrimiento, orquestación
• "contenedorización" es realmente "Dockerization"
Importancia de un ecosistema
El ecosistema de Docker
Repos oficial y 14 k + Dockerized
aplicaciones
Comunidad
640 + colaboradores
250 + correr en Docker
38 descargas
16 k proyectos en github
Apoyo
Soporte empresarial
Documentación robusta
Implementación, integración, capacitación
Red de socios
La plataforma Docker
Motor dDocker
Hub de Docker
Construir, enviar y ejecutar
Socios
Contenid
o
Usuari
os
Repos oficial y 35 K Dockerized
aplicaciones
Adopción de Docker
• Construir una vez, ejecutar en cualquier lugar
• Un entorno de tiempo de ejecución limpio, seguro, higiénico y
portable para su aplicación
• No se preocupe por que faltan dependencias, paquetes y otros Pain
Points durante las implementaciones posteriores.
• Ejecute cada aplicación en su propio contenedor aislado, para que
pueda ejecutar varias versiones de las bibliotecas y otras dependencias
para cada aplicación sin preocuparse
Beneficios para los desarrolladores
• Automatizar las pruebas, la integración, el empaquetado ... todo lo
que puedas por script
• Reduzca/elimine las preocupaciones sobre la compatibilidad en
diferentes plataformas, ya sea su propio ambiente o sus clientes.
• ¿contenedores baratos de cero penalización para desplegar servicios?
¿una VM sin la sobrecarga de una VM? ¿Instant replay con reset of
image snapshots? Ese es el poder de Docker
Beneficios para los desarrolladores
• DevOps es la Unión de personas, procesos y productos para permitir la
entrega continua de valor a nuestros usuarios finales. La contracción
de "dev" y "OPS" se refiere a la sustitución de operaciones y desarrollo
de silos para crear equipos multidisciplinarios que ahora trabajan junto
con prácticas y herramientas compartidas y eficientes. Las prácticas
DevOps esenciales incluyen planificación ágil, integración continua,
entrega continua y monitoreo de aplicaciones.
Rol de DevOps
• Configure una vez ... Ejecute en cualquier lugar
• Hacer que todo el ciclo de vida sea más eficiente, consistente y
repetible
• Aumente la calidad del código producido por los desarrolladores.
• Elimine las inconsistencias entre el desarrollo, las pruebas, producción y
los entornos de clientes
Importancia para DevOps
• Apoya la segregación de deberes
• Mejora significativamente la velocidad y fiabilidad de los sistemas de
implantación continua y de integración continua
• Debido a que los contenedores son ligeros, simplifican los problemas
significativos de performance, costos, despliegue y portabilidad
normalmente asociados con VMS.
Importancia para DevOps
Por qué funciona — separación de roles
• La Desarrollador
• Preocupaciones
sobre lo que está
dentro del
contenedor
• Su Código
• Su Bibliotecas
• Su Gestor de
paquetes
• Su Aplicaciones
• Su Datos
• Todos los
servidores se
ven iguales
• El Administrador
• Preocupaciones
sobre lo queestá
fuera del
contenedor
• Log
• Acceso remoto
• Monitoreo
• Red
• Todos
contenedores
tienen las mismas
operaciones start,
stop, copy, attach,
migrate
Explicación más técnica
• Alto Nivel — es una VM liviana
• Propio proceso
• Propia red interfaz
• Puede ejecutar cosascomo administrador
• Puede tener propia estructura
de archivos
Por qué
• Ejecutar en cualquier lugar
• Independientemente de
núcleo Versión (2.6.32
+)
• Independientemente de host-
distro
• Física ovirtual, nube o no
• Ejecutar cualquier cosa
• Si que puede ejecutar en la
host, se puede ejecutar en
la contenedor
• Si que puede ejecutar en un
Linux entonces puede
ejecutar
Qué
Contenedores vs VMS
Guest
OS
Guest
OS
Host OS
Server
Bins/Libs Bins/Libs
Docker
AppB’
AppB’
AppB’
AppB
AppA’
AppA
VM
Container
App
A
App
A’
App
B
Bins/
Libs
Bins/
Libs
Bins/
Libs
Guest Guest Guest
OSOS OS
Hypervisor (Type 2)
Host OS
Server
Los contenedores está
aislados pero comparten
el Sistema Operativo
…deployment más rápido, menos
overhead, migración más fácil
¿Por qué son ligeros los contenedores Docker?
Contene
dores/
Libs
App
Aplicación
Original
(No tiene OS que
requiera espacio,
recursos o que
requiere reinicio)
Aplicaci
ónΔ
App
Bins/
Libs
App
Comenta
rios
Os
Bins/
Libs
Aplicación
Modificaa
Permite copiar entre
contenedores
VMS
Cada aplicación, cada copia de un
aplicación, y cada levemodificación
de la aplicación requiere un nuevo
servidor virtual
App
GuestOs
Bins/
Libs
Copia de
Aplicación
Sin Os. Puede
Compartir
bins/bibliotecas
App
GuestOs GuestOs
VMs Contenedores
¿Cuáles son los fundamentos del sistema de Docker?
Source
Code
Repository
Dockerfile
For
A
Docker Engine
Docker
Container
Image
Registry
Build
Docker
Host 2 OS (Linux)
ContainerA
ContainerB
ContainerC
ContainerA
Push
Search Pull
Run
Host 1OS(Linux)
Cambios y actualizaciones
Docker
Container
Image
Registry
Docker Engine
Push
Update
Bins/
Libs
App
A
AppΔ
Base
Container
Image
Host is now running A’’
Container
Mod A’’
AppΔ
Bins/
Libs
App
A
App
A’’
Bins/
Libs
Docker Engine
Host running A wants to upgrade to A’’.
Requests update. Gets only diffs
Container
Mod A’
• Sistemas operativos
• Prácticamente cualquier distribución con un 2.6.32
• Red Hat
• CoreOS
• Open
• Docker integration into NOVA (& compatibility with Glance, Horizon, etc.) accepted
for Havana release
• Privado PaaS
• OpenShift
• Solum RAckspace, OpenStack)
• Público PaaS
• Deis, Voxoz, Cocaína (Yandex), BaiduPaaS
Soporte de ecosistemas
Arquitectura Docker
Contenedor de Windows
Docker en Contenedores de Windows
• Docker aprovecha una tecnología denominada namespaces para proporcionar el
espacio de trabajo aislado que llamamos el contenedor.
• Cuando se ejecuta un contenedor, Docker crea un conjunto de espacios de
nombres para ese contenedor.
• Algunos de los espacios de nombres que utiliza el motor de Docker en Linux son:
• La PID namespace: Process Isolation (PID: Process ID).
• El espacio de nombres red: administración de interfaces de red (net: Networking).
• IPC namespace: administrar el acceso a los recursos IPC (IPC: InterProcess Communication).
• Espacio de nombres mnt: administrar puntos de montaje (mnt: Mount).
• UTS namespace: aislar identificadores de versión y kernel. (UTS: Unix Timesharing System)
Namespaces
• El motor de Docker en Linux también hace uso de otra tecnología
llamada cgroups o grupos de control.
• Una clave para ejecutar aplicaciones en aislamiento es que sólo utilicen
los recursos que desee.
• Esto asegura que los contenedores sean buenos ciudadanos de varios
inquilinos en un huésped.
• Los grupos de control permiten que el motor Dock comparta los
recursos de hardware disponibles en los contenedores y, si es
necesario, establecer límites y restricciones.
• Por ejemplo, limitar la memoria disponible a un contenedor específico.
Grupos de control
Arquitectura Docker
• El motor de Docker es una aplicación cliente-servidor con estos
componentes principales:
• Un servidor que es un tipo de programa de larga duración llamado proceso
daemon.
• Un API REST que especifica las interfaces que los programas pueden utilizar
para hablar con el daemon e instruirlo sobre qué hacer.
• Un cliente de interfaz de línea de comandos (CLI).
Docker Engine
Docker Engine
• Una imagen de Docker es una plantilla de sólo lectura. Por ejemplo,
una imagen podría contener un sistema operativo Ubuntu con Apache
y su aplicación web instalada.
• Las imágenes se utilizan para crear contenedores de Docker. Docker
proporciona una forma sencilla de crear nuevas imágenes o actualizar
las imágenes existentes, o puede descargar las imágenes del Dock que
otras personas ya han creado.
• Las imágenes de Docker son el componente de compilación de
Docker.
Imágenes Docker
• Lanzado en junio de 2014
• Permite que cualquier host de Docker ejecute cualquier aplicación en
segundos
• Proporciona repositorios oficiales, públicos y privados de aplicaciones
de Dock
• Gestión del flujo de trabajo: compilación automatizada, Webhooks
• Canal de distribución: consiga el software con soporte y
proporcionado por el vendedor
Hub de Docker
Docker Hub : construir, enviar, ejecutar
aplicaciones
Build Ship
Run
Dev
QA
Source
Staging
Physical
Virtual
Cloud
Infrastructure Management
Infrastructure Management
DockerFile
Source Code
Repository
TESTTEST
TESTTEST
TEST
GCE RAX Azure
Mac/Win Dev
Machine
Boot2Docker
Docker
Analytics
DB
Prod
Machine
Linux OS
DockerDocker
++
Users Collab
Provenance Policy
Docker Hub
Registries
Public Curated Private
Docker Hub API
Third Party Tools
Prod
Machine
Linux OS
DockerDocker
Prod
Machine
Linux OS
DockerDocker
VM
DockerDocker
VM
DockerDocker
VM
DockerDocker
QA Machine
Linux OS
DockerDocker
Any App
Any infrastructure
• Physical
• Virtual cloud
+ 45K apps
+ 16K projects
API
Engine Hub
cloud-based platform services for distributed
applications
API
open source software at the heart
of the Docker platform
• Kubernetes es una plataforma de código abierto para automatizar la
implementación, escalamiento y operaciones de contenedores de
aplicaciones a través de clusters de hosts, proporcionando
infraestructura centrada en contenedores.
• Con Kubernetes, usted puede:
• Implementar sus aplicaciones de forma rápida y predecible.
• Escalar sus aplicaciones sobre la marcha.
• Despliegue sin problemas nuevas características.
• Optimizar el uso de su hardware utilizando sólo los recursos que necesita
Kubernetes
Arquitectura Kubernetes
• Kubernetes es:
• portable: público, privado, híbrido, multi-Cloud
• extensible: modular, pluggable, hookable, composable
• self-healing: auto-placement, auto-restart, auto-replication, auto-scaling
• El proyecto Kubernetes fue iniciado por Google en 2014.
Características de Kubernetes
Herramienta de orquestación de contenedores
Ejecución Docker
• Llevar Docker y contenedores a Windows
• Soporte en Hyper-V
Noticias recientes: Docker for Windows
Reunir a las comunidades
Comunidad
Linux
Comunidad
de Windows
Aplicaciones distribuidas con componentes Linux y
Windows
Dat
os
Usu
ario
DB
Cola
Analytic
s
DB
API
Punto
Web
Fronten
d
Dat
os
Fondo
Trabajado
res
Desarrollo VM
Servidor
de QA
Nube
pública
Recuperación
ante desastres
Laptop de
colaboradores
Servidores de
producción
Clúster de
producción
Centro de datos del
cliente
• Anuncionado en
DockerCon
• Extensiones
soportadas
• Actualizado con las
últimas versiones
Modelo y Docker de la extensión
Agente
Integración del Hub de Docker
Azure MarketplaceHub de Docker
Combinando Windows y Linux en Azure
SQL Server
Workers
Nginx
• Diariamente necesitamos producir entornos de desarrollo y pruebas con nuestras
aplicaciones en línea y bases de datos de SQL Server.
• Para solucionar problemas y solucionar errores, queremos utilizar datos en la
producción. Sin embargo, tiene datos de usuario sensibles por lo tanto queremos
enmascarar esos datos en el entorno de desarrollo y pruebas.
• La solución debe ser repetible y automatizada para que pueda funcionar
diariamente o sobre una cadencia fija sin intervención humana.
• Queremos utilizar Docker para el contenedor de la aplicación y dB y orquestar el
proceso para desplegar, monitorear y contenedorar aplicaciones y dB.
• La solución no debe estar vinculada con el entorno específico del sistema
operativo, ya que elegimos tecnologías que sean las más idóneas para nuestro
negocio y que se puedan ejecutar en plataformas de SO múltiples,Prem o Cloud.
Escenario
Todu
ny
SQL Server en Docker
• Docker Plataforma
• SQL Server en Docker
• Contenedores de base de datos
Init Scripts
SQL Schema
.NET Fx
SQL Server
Server Core
> docker image build
# escape=`
FROM microsoft/mssql-server-windows-express
COPY init-db.sql C:
COPY Initialize-Database.ps1 C:
CMD C:Initialize-Database.ps1
hub.docker.com
> docker image push
sqlservr.exe mssql
> docker container run
> docker container run
sqlservr.exe
Init Scripts
SQL Schema
.NET Fx
Server Core
SQL Server
SQL Server on Docker
> docker container run ...
> docker container run --volume ...
Demo
• Docker tiene un gran impulso construyendo un ecosistema para construir, enviar
y ejecutar aplicaciones
• Docker y Microsoft se han asociado para traer el éxito de Docker en Linux a
Windows
• Ahora, prácticamente cualquier carga de trabajo se puede implementar y
ejecutar en cualquier lugar
Resumen
• Imagen de contenedor de SQL Server 2017: https://docs.Microsoft.com/en-US/SQL/Linux/SQL-Server-Linux-
Setup-Docker
• MSSQL-scrpter : https://github.com/Microsoft/SQL-xplat-CLI
• MSSQL extensión para código vs: https://github.com/Microsoft/vscode-MSSQL
• MSSQL-herramientas (Sqlcmd & BCP): https://docs.Microsoft.com/en-US/SQL/Linux/SQL-Server-Linux-Setup-
Tools
• MEP 17. x: https://docs.Microsoft.com/en-US/SQL/SSMS/download-SQL-Server-Management-Studio-SSMS
• SSDT 17. x: https://docs.Microsoft.com/en-US/SQL/SSDT/download-SQL-Server-Data-Tools-SSDT
• PowerShell x-PLAT: https://github.com/PowerShell/PowerShell
• PowerShell dbatools: https://dbatools.IO/
• Acoplable: https://www.Docker.com/
• Kubernetes: https://kubernetes.IO/
• Servicio de contenedores Azure: https://docs.Microsoft.com/en-US/Azure/Container-Service/
• Registro de contenedores Azure: https://docs.Microsoft.com/en-US/Azure/Container-Registry/Container-
Registry-Get-Started-Azure-CLI
Referencias
Q + A

Introduccion a SQL Server 2017 en Docker

  • 1.
    Ing. Eduardo Castro,PhD PASS Board of Directors eduardo.castro@sqlpass.org
  • 2.
    •Introducción a Docker •SQLServer en escenarios de Docker Agenda
  • 4.
  • 5.
  • 6.
  • 7.
    El reto API endpoint Staticwebsite nginx 1.5 + modsecurity + openssl + bootstrap 2 User DB postgresql + pgv8 + v8 Analytics DB hadoop + hive + thrift + OpenJDK Web frontend Ruby + Rails + sass+ Unicorn Queue Redis + redis-sentinel Background workers Python 3.0 + celery + pyredis + libcurl + ffmpeg + libopencv + nodejs + phantomjs Python 2.7 + Flask + pyredis + celery + psycopg + postgresql-client Development VM QAserver Public Cloud Disaster recovery Contributor’s laptop Production Servers Multiplicityof Stacks Multiplicityof hardware environments Production Cluster Customer DataCenter Doservicesand appsinteract appropriately? CanImigrate smoothlyand quickly?
  • 8.
    La Matrix delinfierno Static website ? ? ? ? ? ? ? Web frontend ? ? ? ? ? ? ? Background workers ? ? ? ? ? ? ? User DB ? ? ? ? ? ? ? Analytics DB ? ? ? ? ? ? ? Queue ? ? ? ? ? ? ? Development VM QA Server Single Prod Server Onsite Cluster Public Cloud Contributor’s laptop Customer Servers
  • 9.
    Transporte de cargaen 1960 DoIworryabout howgoodsinteract (e.g.coffeebeans nexttospices) CanItransport quicklyandsmoothly (e.g.fromboatto traintotruck)
  • 10.
    También una matrizdel infierno ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
  • 11.
    El ecosistema decontenedores de transporte intermodal • 90% de todo el cargamento ahora se envía en un contenedor estándar • Orden de la reducción de la magnitud en coste y tiempo para cargar y descargar los barcos • Reducción masiva de pérdidas por robo o daño • Gran reducción en el costo de flete como porcentaje de bienes finales (de > 25% a < 3%) • globalización masiva • 5000 buques entregan 200 m contenedores por año
  • 12.
    Solución: contenedor deenvío intermodalMultiplicityof Goods Multiplicityof methodsfor transporting/stori ng DoIworryabout howgoodsinteract (e.g.coffeebeans nexttospices) CanItransport quicklyand smoothly (e.g.fromboatto traintotruck) …in between, can be loaded and unloaded, stacked, transported efficiently over long distances, and transferred from one mode of transport to another A standard container that is loaded with virtually any goods, and stays sealed until it reaches final delivery.
  • 13.
    Docker es unsistema de contenedor de envío para el código Static website User DB Web frontend Queue Analytics DB Development VM QAserver Public Cloud Contributor’s laptop Multiplicityof Stacks Multiplicityof hardware environments Production Cluster Customer Data Center Doservicesand appsinteract appropriately? CanImigrate smoothlyand quickly …that can be manipulated using standard operations and run consistently on virtually any hardware platform An engine that enables any payload to be encapsulated as a lightweight, portable, self- sufficient container…
  • 14.
    Docker elimina lamatriz del infierno Static website Web frontend Background workers User DB Analytics DB Queue Development VM QA Server Single Prod Server Onsite Cluster Public Cloud Contributor’s laptop Customer Servers
  • 15.
    • La tecnologíade contenedores ha existido por un tiempo (LXC, Solaris Zones, BSD Jails) • Analogía: los contenedors de envío no son solamente cajas de acero • Con Docker, los contenedors del nivel bajo consiguen lo siguiente: • Componentes reutilizables • Capacidad para ejecutar en cualquier servidor Linux de hoy: física, virtual, VM, Cloud, Open, ++ + • Capacidad de moverse entre cualquiera de los anteriores en cuestión de segundos-sin modificación o demora • Capacidad de compartir componentes en contenedor • Entorno autónomo — sin dependencia del infierno • Herramientas para la forma en que los contenedores trabajan juntos: vinculación, anidación, descubrimiento, orquestación • "contenedorización" es realmente "Dockerization" Importancia de un ecosistema
  • 16.
    El ecosistema deDocker Repos oficial y 14 k + Dockerized aplicaciones Comunidad 640 + colaboradores 250 + correr en Docker 38 descargas 16 k proyectos en github Apoyo Soporte empresarial Documentación robusta Implementación, integración, capacitación Red de socios La plataforma Docker Motor dDocker Hub de Docker Construir, enviar y ejecutar Socios Contenid o Usuari os Repos oficial y 35 K Dockerized aplicaciones
  • 17.
  • 18.
    • Construir unavez, ejecutar en cualquier lugar • Un entorno de tiempo de ejecución limpio, seguro, higiénico y portable para su aplicación • No se preocupe por que faltan dependencias, paquetes y otros Pain Points durante las implementaciones posteriores. • Ejecute cada aplicación en su propio contenedor aislado, para que pueda ejecutar varias versiones de las bibliotecas y otras dependencias para cada aplicación sin preocuparse Beneficios para los desarrolladores
  • 19.
    • Automatizar laspruebas, la integración, el empaquetado ... todo lo que puedas por script • Reduzca/elimine las preocupaciones sobre la compatibilidad en diferentes plataformas, ya sea su propio ambiente o sus clientes. • ¿contenedores baratos de cero penalización para desplegar servicios? ¿una VM sin la sobrecarga de una VM? ¿Instant replay con reset of image snapshots? Ese es el poder de Docker Beneficios para los desarrolladores
  • 20.
    • DevOps esla Unión de personas, procesos y productos para permitir la entrega continua de valor a nuestros usuarios finales. La contracción de "dev" y "OPS" se refiere a la sustitución de operaciones y desarrollo de silos para crear equipos multidisciplinarios que ahora trabajan junto con prácticas y herramientas compartidas y eficientes. Las prácticas DevOps esenciales incluyen planificación ágil, integración continua, entrega continua y monitoreo de aplicaciones. Rol de DevOps
  • 21.
    • Configure unavez ... Ejecute en cualquier lugar • Hacer que todo el ciclo de vida sea más eficiente, consistente y repetible • Aumente la calidad del código producido por los desarrolladores. • Elimine las inconsistencias entre el desarrollo, las pruebas, producción y los entornos de clientes Importancia para DevOps
  • 22.
    • Apoya lasegregación de deberes • Mejora significativamente la velocidad y fiabilidad de los sistemas de implantación continua y de integración continua • Debido a que los contenedores son ligeros, simplifican los problemas significativos de performance, costos, despliegue y portabilidad normalmente asociados con VMS. Importancia para DevOps
  • 23.
    Por qué funciona— separación de roles • La Desarrollador • Preocupaciones sobre lo que está dentro del contenedor • Su Código • Su Bibliotecas • Su Gestor de paquetes • Su Aplicaciones • Su Datos • Todos los servidores se ven iguales • El Administrador • Preocupaciones sobre lo queestá fuera del contenedor • Log • Acceso remoto • Monitoreo • Red • Todos contenedores tienen las mismas operaciones start, stop, copy, attach, migrate
  • 24.
    Explicación más técnica •Alto Nivel — es una VM liviana • Propio proceso • Propia red interfaz • Puede ejecutar cosascomo administrador • Puede tener propia estructura de archivos Por qué • Ejecutar en cualquier lugar • Independientemente de núcleo Versión (2.6.32 +) • Independientemente de host- distro • Física ovirtual, nube o no • Ejecutar cualquier cosa • Si que puede ejecutar en la host, se puede ejecutar en la contenedor • Si que puede ejecutar en un Linux entonces puede ejecutar Qué
  • 25.
    Contenedores vs VMS Guest OS Guest OS HostOS Server Bins/Libs Bins/Libs Docker AppB’ AppB’ AppB’ AppB AppA’ AppA VM Container App A App A’ App B Bins/ Libs Bins/ Libs Bins/ Libs Guest Guest Guest OSOS OS Hypervisor (Type 2) Host OS Server Los contenedores está aislados pero comparten el Sistema Operativo …deployment más rápido, menos overhead, migración más fácil
  • 26.
    ¿Por qué sonligeros los contenedores Docker? Contene dores/ Libs App Aplicación Original (No tiene OS que requiera espacio, recursos o que requiere reinicio) Aplicaci ónΔ App Bins/ Libs App Comenta rios Os Bins/ Libs Aplicación Modificaa Permite copiar entre contenedores VMS Cada aplicación, cada copia de un aplicación, y cada levemodificación de la aplicación requiere un nuevo servidor virtual App GuestOs Bins/ Libs Copia de Aplicación Sin Os. Puede Compartir bins/bibliotecas App GuestOs GuestOs VMs Contenedores
  • 27.
    ¿Cuáles son losfundamentos del sistema de Docker? Source Code Repository Dockerfile For A Docker Engine Docker Container Image Registry Build Docker Host 2 OS (Linux) ContainerA ContainerB ContainerC ContainerA Push Search Pull Run Host 1OS(Linux)
  • 28.
    Cambios y actualizaciones Docker Container Image Registry DockerEngine Push Update Bins/ Libs App A AppΔ Base Container Image Host is now running A’’ Container Mod A’’ AppΔ Bins/ Libs App A App A’’ Bins/ Libs Docker Engine Host running A wants to upgrade to A’’. Requests update. Gets only diffs Container Mod A’
  • 29.
    • Sistemas operativos •Prácticamente cualquier distribución con un 2.6.32 • Red Hat • CoreOS • Open • Docker integration into NOVA (& compatibility with Glance, Horizon, etc.) accepted for Havana release • Privado PaaS • OpenShift • Solum RAckspace, OpenStack) • Público PaaS • Deis, Voxoz, Cocaína (Yandex), BaiduPaaS Soporte de ecosistemas
  • 30.
  • 31.
  • 32.
  • 33.
    • Docker aprovechauna tecnología denominada namespaces para proporcionar el espacio de trabajo aislado que llamamos el contenedor. • Cuando se ejecuta un contenedor, Docker crea un conjunto de espacios de nombres para ese contenedor. • Algunos de los espacios de nombres que utiliza el motor de Docker en Linux son: • La PID namespace: Process Isolation (PID: Process ID). • El espacio de nombres red: administración de interfaces de red (net: Networking). • IPC namespace: administrar el acceso a los recursos IPC (IPC: InterProcess Communication). • Espacio de nombres mnt: administrar puntos de montaje (mnt: Mount). • UTS namespace: aislar identificadores de versión y kernel. (UTS: Unix Timesharing System) Namespaces
  • 34.
    • El motorde Docker en Linux también hace uso de otra tecnología llamada cgroups o grupos de control. • Una clave para ejecutar aplicaciones en aislamiento es que sólo utilicen los recursos que desee. • Esto asegura que los contenedores sean buenos ciudadanos de varios inquilinos en un huésped. • Los grupos de control permiten que el motor Dock comparta los recursos de hardware disponibles en los contenedores y, si es necesario, establecer límites y restricciones. • Por ejemplo, limitar la memoria disponible a un contenedor específico. Grupos de control
  • 35.
  • 36.
    • El motorde Docker es una aplicación cliente-servidor con estos componentes principales: • Un servidor que es un tipo de programa de larga duración llamado proceso daemon. • Un API REST que especifica las interfaces que los programas pueden utilizar para hablar con el daemon e instruirlo sobre qué hacer. • Un cliente de interfaz de línea de comandos (CLI). Docker Engine
  • 37.
  • 38.
    • Una imagende Docker es una plantilla de sólo lectura. Por ejemplo, una imagen podría contener un sistema operativo Ubuntu con Apache y su aplicación web instalada. • Las imágenes se utilizan para crear contenedores de Docker. Docker proporciona una forma sencilla de crear nuevas imágenes o actualizar las imágenes existentes, o puede descargar las imágenes del Dock que otras personas ya han creado. • Las imágenes de Docker son el componente de compilación de Docker. Imágenes Docker
  • 39.
    • Lanzado enjunio de 2014 • Permite que cualquier host de Docker ejecute cualquier aplicación en segundos • Proporciona repositorios oficiales, públicos y privados de aplicaciones de Dock • Gestión del flujo de trabajo: compilación automatizada, Webhooks • Canal de distribución: consiga el software con soporte y proporcionado por el vendedor Hub de Docker
  • 40.
    Docker Hub :construir, enviar, ejecutar aplicaciones Build Ship Run Dev QA Source Staging Physical Virtual Cloud Infrastructure Management Infrastructure Management DockerFile Source Code Repository TESTTEST TESTTEST TEST GCE RAX Azure Mac/Win Dev Machine Boot2Docker Docker Analytics DB Prod Machine Linux OS DockerDocker ++ Users Collab Provenance Policy Docker Hub Registries Public Curated Private Docker Hub API Third Party Tools Prod Machine Linux OS DockerDocker Prod Machine Linux OS DockerDocker VM DockerDocker VM DockerDocker VM DockerDocker QA Machine Linux OS DockerDocker
  • 41.
    Any App Any infrastructure •Physical • Virtual cloud + 45K apps + 16K projects API Engine Hub cloud-based platform services for distributed applications API open source software at the heart of the Docker platform
  • 42.
    • Kubernetes esuna plataforma de código abierto para automatizar la implementación, escalamiento y operaciones de contenedores de aplicaciones a través de clusters de hosts, proporcionando infraestructura centrada en contenedores. • Con Kubernetes, usted puede: • Implementar sus aplicaciones de forma rápida y predecible. • Escalar sus aplicaciones sobre la marcha. • Despliegue sin problemas nuevas características. • Optimizar el uso de su hardware utilizando sólo los recursos que necesita Kubernetes
  • 43.
  • 44.
    • Kubernetes es: •portable: público, privado, híbrido, multi-Cloud • extensible: modular, pluggable, hookable, composable • self-healing: auto-placement, auto-restart, auto-replication, auto-scaling • El proyecto Kubernetes fue iniciado por Google en 2014. Características de Kubernetes
  • 45.
  • 46.
  • 47.
    • Llevar Dockery contenedores a Windows • Soporte en Hyper-V Noticias recientes: Docker for Windows
  • 48.
    Reunir a lascomunidades Comunidad Linux Comunidad de Windows
  • 49.
    Aplicaciones distribuidas concomponentes Linux y Windows Dat os Usu ario DB Cola Analytic s DB API Punto Web Fronten d Dat os Fondo Trabajado res Desarrollo VM Servidor de QA Nube pública Recuperación ante desastres Laptop de colaboradores Servidores de producción Clúster de producción Centro de datos del cliente
  • 50.
    • Anuncionado en DockerCon •Extensiones soportadas • Actualizado con las últimas versiones Modelo y Docker de la extensión Agente
  • 51.
    Integración del Hubde Docker Azure MarketplaceHub de Docker
  • 52.
    Combinando Windows yLinux en Azure SQL Server Workers Nginx
  • 53.
    • Diariamente necesitamosproducir entornos de desarrollo y pruebas con nuestras aplicaciones en línea y bases de datos de SQL Server. • Para solucionar problemas y solucionar errores, queremos utilizar datos en la producción. Sin embargo, tiene datos de usuario sensibles por lo tanto queremos enmascarar esos datos en el entorno de desarrollo y pruebas. • La solución debe ser repetible y automatizada para que pueda funcionar diariamente o sobre una cadencia fija sin intervención humana. • Queremos utilizar Docker para el contenedor de la aplicación y dB y orquestar el proceso para desplegar, monitorear y contenedorar aplicaciones y dB. • La solución no debe estar vinculada con el entorno específico del sistema operativo, ya que elegimos tecnologías que sean las más idóneas para nuestro negocio y que se puedan ejecutar en plataformas de SO múltiples,Prem o Cloud. Escenario
  • 54.
    Todu ny SQL Server enDocker • Docker Plataforma • SQL Server en Docker • Contenedores de base de datos
  • 55.
    Init Scripts SQL Schema .NETFx SQL Server Server Core > docker image build
  • 56.
    # escape=` FROM microsoft/mssql-server-windows-express COPYinit-db.sql C: COPY Initialize-Database.ps1 C: CMD C:Initialize-Database.ps1
  • 57.
  • 58.
  • 59.
    > docker containerrun sqlservr.exe Init Scripts SQL Schema .NET Fx Server Core SQL Server
  • 60.
  • 61.
  • 62.
    > docker containerrun --volume ...
  • 71.
  • 72.
    • Docker tieneun gran impulso construyendo un ecosistema para construir, enviar y ejecutar aplicaciones • Docker y Microsoft se han asociado para traer el éxito de Docker en Linux a Windows • Ahora, prácticamente cualquier carga de trabajo se puede implementar y ejecutar en cualquier lugar Resumen
  • 73.
    • Imagen decontenedor de SQL Server 2017: https://docs.Microsoft.com/en-US/SQL/Linux/SQL-Server-Linux- Setup-Docker • MSSQL-scrpter : https://github.com/Microsoft/SQL-xplat-CLI • MSSQL extensión para código vs: https://github.com/Microsoft/vscode-MSSQL • MSSQL-herramientas (Sqlcmd & BCP): https://docs.Microsoft.com/en-US/SQL/Linux/SQL-Server-Linux-Setup- Tools • MEP 17. x: https://docs.Microsoft.com/en-US/SQL/SSMS/download-SQL-Server-Management-Studio-SSMS • SSDT 17. x: https://docs.Microsoft.com/en-US/SQL/SSDT/download-SQL-Server-Data-Tools-SSDT • PowerShell x-PLAT: https://github.com/PowerShell/PowerShell • PowerShell dbatools: https://dbatools.IO/ • Acoplable: https://www.Docker.com/ • Kubernetes: https://kubernetes.IO/ • Servicio de contenedores Azure: https://docs.Microsoft.com/en-US/Azure/Container-Service/ • Registro de contenedores Azure: https://docs.Microsoft.com/en-US/Azure/Container-Registry/Container- Registry-Get-Started-Azure-CLI Referencias
  • 74.