11. 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
12. 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.
13. 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…
14. 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
15. • 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
16. 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
18. • 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
19. • 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
20. • 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
21. • 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
22. • 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
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
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
26. ¿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
27. ¿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)
28. 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’
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
33. • 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
34. • 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
36. • 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
38. • 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
39. • 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
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 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
47. • Llevar Docker y contenedores a Windows
• Soporte en Hyper-V
Noticias recientes: Docker for Windows
48. Reunir a las comunidades
Comunidad
Linux
Comunidad
de Windows
49. 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
50. • Anuncionado en
DockerCon
• Extensiones
soportadas
• Actualizado con las
últimas versiones
Modelo y Docker de la extensión
Agente
53. • 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
54. Todu
ny
SQL Server en Docker
• Docker Plataforma
• SQL Server en Docker
• Contenedores de base de datos
72. • 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
73. • 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