#SQLSatMadrid
“Dockeriza” tu SQL Server
Adrián Díaz Cervera
Alberto Díaz Martin
#SQLSatMadrid
BIG Thanks to SQLSatMadrid sponsors
#SQLSatMadrid
Sponsor sessions at 11:40
Don’t miss them, they might be getting distributing
some awesome prizes!
Plainconcepts
SolidQ
KABEL & Corent
Also XBOX One & Raffle prizes at 17:30
#SQLSatMadrid
Agenda
• Que es Docker
• Terminología
• Docker versus Maquina Virtual
• Beneficios
• Por qué empezar a utilizarlo
#SQLSatMadrid
¿Cuál es el problema?
#SQLSatMadrid
Múltiples
mercancías
Multituddemétodos
detransportey
almacenamiento
Nomepreocupa
comointeractúan
losinmueblesentre
si
Sepuede
transportarla
mercancía
rápidamenteysin
problemas
Solución: Transporte en contenedores
Y en medio pueden ser cargados
y descargados, apilados, que se
transportan en largas distancias y
se cambian de un medio a otro
Un contenedor que se carga
con cualquier mercancía y
permanece sellada hasta el
destino final.
#SQLSatMadrid
¿Qué es un contenedor?
Una unidad de despliegue
Corre en un SO
En SO Virtualizados
Arranque rápido
Portable
#SQLSatMadrid
¿Qué es ?
Proyecto de código abierto
Automatiza el despliegue de App usando
contenedores
Proporcionando una capa adicional de abstracción y
automatización a nivel de OS
#SQLSatMadrid
Máquinas Virtuales vs Contenedores
App
A
Hypervisor (Type 2)
Host OS
Server
Guest
OS
Bins/
Libs
App
A’
Guest
OS
Bins/
Libs
App
B
Guest
OS
Bins/
Libs
AppA’
Host OS
Server
Bins/Libs
AppA
Bins/Libs
AppB
AppB’
AppB’
AppB’
VM
Container
Los contenedores están aislados
pero comparten el kernel
Guest
OS
Guest
OS
…el resultado es un despliegue más
rápido, con menos costoso y más fácil
Docker Deamon
#SQLSatMadrid
En que nos ayuda Docker
No hay que preocuparse acerca de la configuración y el
mantenimiento de los entornos
Centrado en el producto
• Acelera el desarrollo
• Evita problemas con el entorno
• Libertad de elección al desarrollador
#SQLSatMadrid
Revisión de Términos
Docker Client
Es la interfaz de usuario que permite la comunicación entre el usuario y el Docker Daemon
Docker Daemon
Alojado en la máquina y se encarga de contestar las solicitudes.
Docker Hub
Es un registro centralizado que permite la copia de seguridad de imágenes de contenedores tanto publicos como
privados.
Docker Containers
Los responsables de la ejecución de las aplicaciones: incluye app, archivos so y metadatos
Docker Images
Templates de solo lectura que ayudan a lanzar contenedores
Docker File
Fichero donde se indica todo el contenido del contenedor
#SQLSatMadrid
DEMO
#SQLSatMadrid
El mundo está
demandando
SQL Server en
Linux
20K+Peticiones para
probar la preview
BD Empresariales
ejecutándose en Linux
36%
#SQLSatMadrid
Bringing SQL Server to Linux
is another way we are making
our products and new
innovations more accessible to
a broader set of users and
meeting them where they are.
Scott Guthrie
Microsoft
Microsoft
#SQLSatMadrid
Targeting CY2017
SQL Server 2017 GA*
En la plataforma que elijas
SQL Server 2017
#SQLSatMadrid
SQL Server en las siguientes plataformas
Linux Linux/Windows container
Windows
Windows Server
• Linux distributions incluyendo
Red Hat Enterprise Linux (RHEL),
Ubuntu, y SUSE Linux Enterprise
(SLES)
• Contenedors Linux para Docker
en MacOS, Windows y Linux;
Contenedores Windows e Hyper-V
para SQL Server en Windows
• Instalación empaquetada, yum
install, apt-get, zypper y otras
opciones
#SQLSatMadrid
Herraminetas de SQL en Linux
#SQLSatMadrid
Instancias y Docker
Las instancias de SQL Server en Windows no son triviales
Proceso largo de setup
Magia en el filesystem, registro y cuánto dura la instalación
Frecuentemente require reinicio del sistema
Contenedores Docker aportan mejoras
Instancias fáciles de configurar y eliminar
Levantamos un SQL Server en segundos
No es necesario reinicios
El proceso es siempe reproducible
Siempre independiente del sistema host
#SQLSatMadrid
SQL Server Instances and Docker
Mejora en muchos escenarios
Instalaciones de SP & CU
Actualizaciones
Instancias temporales
Pruebas de SP & CU
Pruebas de restauración
Pruebas de cambia de configuración
Instancias de Desarrollo
Unite testing de base de datos
CI/CD
DEMO
#SQLSatMadrid
SQL Server Docker - Imágenes
Dos imágenes base:: Linux y Windows
Github - https://github.com/Microsoft/mssql-docker
Requisitos
Docker Engine 1.8+
Min 4 GB disco
Min 4 GB memoria
#SQLSatMadrid
SQL Server DockerFiles
Un fichero en docker host que contiene los commandos de creación
de la imagen personalizada
FROM microsoft/mssql-server-windows
RUN powershell -Command (mkdir C:SQLServer)
COPY DatabaseA.mdf C:SQLServer
COPY DatabaseA_log.ldf C:SQLServer
ENV SA_PASSWORD=Testing11@@
ENV ACCEPT_EULA=Y
ENV
attach_dbs="[{'dbName':'DatabaseA','dbFiles':['C:SQLServerDatabaseA.mdf','C:SQLServerDatabaseA_log.ldf']}]"
#SQLSatMadrid
DEMO
#SQLSatMadrid
DevOps
Develop + Test
Plan + Track
Monitor + Learn
Release
Development Production
DevOps es un cambio de mentalidad para añadir
mejores practices enfocadas a la automatización.
#SQLSatMadrid
DevOps: No nos olvidemos de la BD!
¿Tú aplicación tiene una BD?
Necesitas controlar las versiones
Compilaciones automatizadas y despliegues de esquemas de bases
de datos
Diferentes aproximaciones:
SQL Server Data Tools (SSDT)
Entity Framework Migrations
DacPac
Docker
#SQLSatMadrid
BUILD DACPAC DOCKERFILE
# escape=`
FROM microsoft/windowsservercore
MAINTAINER Elton Stoneman <elton@docker.com>
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]
RUN Install-PackageProvider -Name chocolatey -Force; `
Install-Package -Name microsoft-build-tools -RequiredVersion 14.0.25420.1 -Force; `
Install-Package dotnet4.6-targetpack -Force
RUN Install-Package nuget.commandline -Force; `
& C:Chocolateybinnuget install Microsoft.Data.Tools.Msbuild
CMD cd 'C:Program Files (x86)MSBuild14.0Bin'; `
.msbuild C:srcAssets.DatabaseAssets.Database.sqlproj `
/p:SQLDBExtensionsRefPath="C:Microsoft.Data.Tools.Msbuild.10.0.61026libnet40" `
/p:SqlServerRedistPath="C:Microsoft.Data.Tools.Msbuild.10.0.61026libnet40"; `
cp 'C:srcAssets.DatabasebinDebugAssets.Database.dacpac' 'c:bin'
#SQLSatMadrid
Build y Copy DACPAC
docker build -t assets-db-builder -f Dockerfile.builder .
mkdir out
docker run --rm -v $pwdout:c:bin -v $pwdsrc:c:src
assets-db-builder
outAssets.Database.dacpac
#SQLSatMadrid
DOCKER FILE SQL SERVER
# escape=`
FROM microsoft/mssql-server-windows-express
MAINTAINER Elton Stoneman <elton@docker.com>
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]
EXPOSE 1433
VOLUME c:database
ENV sa_password D0cker!a8s
RUN md c:init
WORKDIR c:init
COPY .outAssets.Database.dacpac .
COPY Initialize-Database.ps1 .
CMD ./Initialize-Database.ps1 -sa_password $env:sa_password -Verbose
#SQLSatMadrid
DOCKER InitializeDatabase
CREATE DATABASE AssetsDB ON
(FILENAME = N'c:databaseAssetsDB_Primary.mdf'), (FILENAME =
N'c:databaseAssetsDB_Primary.ldf’)
FOR ATTACH;
SqlPackage.exe `
/sf:Assets.Database.dacpac `
/a:Script /op:create.sql /p:CommentOutSetVarDeclarations=true `
/tsn:.SQLEXPRESS /tdn:AssetsDB /tu:sa /tp:$sa_password
#SQLSatMadrid
DEMO
#SQLSatMadrid
Preguntas !!
http://blogs.encamina.com/desarrollandosobresharepoint
adiaz@encamina.com
@AdrianDiaz81
http://blogs.encamina.com/porunanubesostenible
Alberto.diaz@encamina.com
@adiazcan

Dockeriza tu SQL Server

  • 1.
    #SQLSatMadrid “Dockeriza” tu SQLServer Adrián Díaz Cervera Alberto Díaz Martin
  • 2.
    #SQLSatMadrid BIG Thanks toSQLSatMadrid sponsors
  • 3.
    #SQLSatMadrid Sponsor sessions at11:40 Don’t miss them, they might be getting distributing some awesome prizes! Plainconcepts SolidQ KABEL & Corent Also XBOX One & Raffle prizes at 17:30
  • 4.
    #SQLSatMadrid Agenda • Que esDocker • Terminología • Docker versus Maquina Virtual • Beneficios • Por qué empezar a utilizarlo
  • 5.
  • 6.
    #SQLSatMadrid Múltiples mercancías Multituddemétodos detransportey almacenamiento Nomepreocupa comointeractúan losinmueblesentre si Sepuede transportarla mercancía rápidamenteysin problemas Solución: Transporte encontenedores Y en medio pueden ser cargados y descargados, apilados, que se transportan en largas distancias y se cambian de un medio a otro Un contenedor que se carga con cualquier mercancía y permanece sellada hasta el destino final.
  • 7.
    #SQLSatMadrid ¿Qué es uncontenedor? Una unidad de despliegue Corre en un SO En SO Virtualizados Arranque rápido Portable
  • 8.
    #SQLSatMadrid ¿Qué es ? Proyectode código abierto Automatiza el despliegue de App usando contenedores Proporcionando una capa adicional de abstracción y automatización a nivel de OS
  • 9.
    #SQLSatMadrid Máquinas Virtuales vsContenedores App A Hypervisor (Type 2) Host OS Server Guest OS Bins/ Libs App A’ Guest OS Bins/ Libs App B Guest OS Bins/ Libs AppA’ Host OS Server Bins/Libs AppA Bins/Libs AppB AppB’ AppB’ AppB’ VM Container Los contenedores están aislados pero comparten el kernel Guest OS Guest OS …el resultado es un despliegue más rápido, con menos costoso y más fácil Docker Deamon
  • 10.
    #SQLSatMadrid En que nosayuda Docker No hay que preocuparse acerca de la configuración y el mantenimiento de los entornos Centrado en el producto • Acelera el desarrollo • Evita problemas con el entorno • Libertad de elección al desarrollador
  • 11.
    #SQLSatMadrid Revisión de Términos DockerClient Es la interfaz de usuario que permite la comunicación entre el usuario y el Docker Daemon Docker Daemon Alojado en la máquina y se encarga de contestar las solicitudes. Docker Hub Es un registro centralizado que permite la copia de seguridad de imágenes de contenedores tanto publicos como privados. Docker Containers Los responsables de la ejecución de las aplicaciones: incluye app, archivos so y metadatos Docker Images Templates de solo lectura que ayudan a lanzar contenedores Docker File Fichero donde se indica todo el contenido del contenedor
  • 12.
  • 13.
    #SQLSatMadrid El mundo está demandando SQLServer en Linux 20K+Peticiones para probar la preview BD Empresariales ejecutándose en Linux 36%
  • 14.
    #SQLSatMadrid Bringing SQL Serverto Linux is another way we are making our products and new innovations more accessible to a broader set of users and meeting them where they are. Scott Guthrie Microsoft Microsoft
  • 15.
    #SQLSatMadrid Targeting CY2017 SQL Server2017 GA* En la plataforma que elijas SQL Server 2017
  • 16.
    #SQLSatMadrid SQL Server enlas siguientes plataformas Linux Linux/Windows container Windows Windows Server • Linux distributions incluyendo Red Hat Enterprise Linux (RHEL), Ubuntu, y SUSE Linux Enterprise (SLES) • Contenedors Linux para Docker en MacOS, Windows y Linux; Contenedores Windows e Hyper-V para SQL Server en Windows • Instalación empaquetada, yum install, apt-get, zypper y otras opciones
  • 17.
  • 18.
    #SQLSatMadrid Instancias y Docker Lasinstancias de SQL Server en Windows no son triviales Proceso largo de setup Magia en el filesystem, registro y cuánto dura la instalación Frecuentemente require reinicio del sistema Contenedores Docker aportan mejoras Instancias fáciles de configurar y eliminar Levantamos un SQL Server en segundos No es necesario reinicios El proceso es siempe reproducible Siempre independiente del sistema host
  • 19.
    #SQLSatMadrid SQL Server Instancesand Docker Mejora en muchos escenarios Instalaciones de SP & CU Actualizaciones Instancias temporales Pruebas de SP & CU Pruebas de restauración Pruebas de cambia de configuración Instancias de Desarrollo Unite testing de base de datos CI/CD
  • 20.
  • 21.
    #SQLSatMadrid SQL Server Docker- Imágenes Dos imágenes base:: Linux y Windows Github - https://github.com/Microsoft/mssql-docker Requisitos Docker Engine 1.8+ Min 4 GB disco Min 4 GB memoria
  • 22.
    #SQLSatMadrid SQL Server DockerFiles Unfichero en docker host que contiene los commandos de creación de la imagen personalizada FROM microsoft/mssql-server-windows RUN powershell -Command (mkdir C:SQLServer) COPY DatabaseA.mdf C:SQLServer COPY DatabaseA_log.ldf C:SQLServer ENV SA_PASSWORD=Testing11@@ ENV ACCEPT_EULA=Y ENV attach_dbs="[{'dbName':'DatabaseA','dbFiles':['C:SQLServerDatabaseA.mdf','C:SQLServerDatabaseA_log.ldf']}]"
  • 23.
  • 24.
    #SQLSatMadrid DevOps Develop + Test Plan+ Track Monitor + Learn Release Development Production DevOps es un cambio de mentalidad para añadir mejores practices enfocadas a la automatización.
  • 25.
    #SQLSatMadrid DevOps: No nosolvidemos de la BD! ¿Tú aplicación tiene una BD? Necesitas controlar las versiones Compilaciones automatizadas y despliegues de esquemas de bases de datos Diferentes aproximaciones: SQL Server Data Tools (SSDT) Entity Framework Migrations DacPac Docker
  • 26.
    #SQLSatMadrid BUILD DACPAC DOCKERFILE #escape=` FROM microsoft/windowsservercore MAINTAINER Elton Stoneman <elton@docker.com> SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"] RUN Install-PackageProvider -Name chocolatey -Force; ` Install-Package -Name microsoft-build-tools -RequiredVersion 14.0.25420.1 -Force; ` Install-Package dotnet4.6-targetpack -Force RUN Install-Package nuget.commandline -Force; ` & C:Chocolateybinnuget install Microsoft.Data.Tools.Msbuild CMD cd 'C:Program Files (x86)MSBuild14.0Bin'; ` .msbuild C:srcAssets.DatabaseAssets.Database.sqlproj ` /p:SQLDBExtensionsRefPath="C:Microsoft.Data.Tools.Msbuild.10.0.61026libnet40" ` /p:SqlServerRedistPath="C:Microsoft.Data.Tools.Msbuild.10.0.61026libnet40"; ` cp 'C:srcAssets.DatabasebinDebugAssets.Database.dacpac' 'c:bin'
  • 27.
    #SQLSatMadrid Build y CopyDACPAC docker build -t assets-db-builder -f Dockerfile.builder . mkdir out docker run --rm -v $pwdout:c:bin -v $pwdsrc:c:src assets-db-builder outAssets.Database.dacpac
  • 28.
    #SQLSatMadrid DOCKER FILE SQLSERVER # escape=` FROM microsoft/mssql-server-windows-express MAINTAINER Elton Stoneman <elton@docker.com> SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"] EXPOSE 1433 VOLUME c:database ENV sa_password D0cker!a8s RUN md c:init WORKDIR c:init COPY .outAssets.Database.dacpac . COPY Initialize-Database.ps1 . CMD ./Initialize-Database.ps1 -sa_password $env:sa_password -Verbose
  • 29.
    #SQLSatMadrid DOCKER InitializeDatabase CREATE DATABASEAssetsDB ON (FILENAME = N'c:databaseAssetsDB_Primary.mdf'), (FILENAME = N'c:databaseAssetsDB_Primary.ldf’) FOR ATTACH; SqlPackage.exe ` /sf:Assets.Database.dacpac ` /a:Script /op:create.sql /p:CommentOutSetVarDeclarations=true ` /tsn:.SQLEXPRESS /tdn:AssetsDB /tu:sa /tp:$sa_password
  • 30.
  • 31.