Installer SQL Server vNext CTP1 dans un container windows
Par Arian Papillon le samedi 26 novembre 2016, 19:12 - Lien permanent
Les containers sont à la mode. La fonctionnalité de containers docker est présente dans Windows Server 2016. Et elle est aussi disponible pour les stations de travail depuis la version anniversaire de Windows 10.
L'avantage des container docker : ils permettent de déployer rapidement et simplement une application "virtualisée", qui restera isolée du système hôte :
Installer sur ma machine de travail une version CTP du moteur SGBD SQL Server ? Pas question !...Mais c'est maintenant possible sans polluer ma machine : dans un container Docker, encore plus rapide à déployer qu'une VM !
Le petit tutoriel que voici vous permettra d'installer le composant docker et d'installer SQL Server vNext sur une machine Windows 10 (version anniversaire) ou un serveur Windows 2016 en quelques commandes PowerShell.
Pour des conteneurs Linux, il existe une version (bêta) sur le site docker qui permet de prendre en charge côte à côte des containers Windows et Linux. A tenter pour une autre fois...
Pour que toute l'installation fonctionne, vous devez lancer powershell en tant qu'administrateur
Première étape : activer les composants requis
La fonctionnalité de containers et celle d'hyper-v doivent être activées.
Enable-WindowsOptionalFeature -Online -FeatureName containers -All
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Si vous préférez, vous pouvez le faire depuis l'interface graphique (ajout de fonctionnalités Windows).
Redémarrez ensuite l'ordinateur
Deuxième étape : installer docker
Téléchargez l'image docker : https://master.dockerproject.org/windows/amd64/docker-1.14.0-dev.zip et décompressez la dans Program Files. Avec powershell, cela donne :
Invoke-WebRequest "https://master.dockerproject.org/windows/amd64/docker-1.14.0-dev.zip" -OutFile "$env:TEMP\docker-1.14.0-dev.zip" -UseBasicParsing
Expand-Archive -Path "$env:TEMP\docker-1.14.0-dev.zip" -DestinationPath $env:ProgramFiles
Configurez le path pour inclure le répertoire docker :
$env:path += ";c:\program files\docker"
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)
Puis enregistrez docker en tant que service, et démarrez le :
dockerd --register-service
Start-Service Docker
Troisième étape : télécharger l'image docker de SQL Server vnext
docker pull microsoft/mssql-server-windows
Cela peut être un peu long si vous n'avez qu'une pauvre bande passante...
Quatrième étape : créer le container
docker run -d --name vnext -p 1433:1433 -h vnext -e sa_password=P@ssw0rd -e ACCEPT_EULA=Y microsoft/mssql-server-windows
Quelques commandes de gestion de votre container :lister les containers
existants, arrêter ou démarrer son container...
docker container ls -a
docker container stop vNext
docker container rm vNext
Cinquième étape : s'y connecter
Il vous faut trouver l'adresse IP de votre instance SQL Server :
Sur votre machine, Docker a créé un réseau "nat", un switch virtuel et une
carte réseau virtuelle qui vous permettra de communiquer entre la machine hôte
et le container.
Le container SQL Server a sa propre adresse IP dans le sous-réseau nat, et une
translation du port 1433 a été activée.
Identifiez l'adresse IP de votre container avec la commande :
docker container inspect vnext -f="{{.NetworkSettings.Networks.nat.IPAddress}}"
Il ne vous reste plus qu'à vous connecter avec SSMS, ceci ne fonctionnant que depuis votre machine hôte avec cette configuration réseau interne.
Ce qui est un peu trompeur, c'est que l'OS renvoyé par SQL Server est Windows 2016, alors que la plate-forme hôte est Windows 10...