NLEN
Direct technisch advies?
Direct een ervaren DBA aan de lijn voor database hulp, support en ondersteuning. We kunnen eventueel direct met u meekijken!035 369 0304
dba@optimadata.nl
Home > Blog

SQL Server draaien op Docker deel 1 De basis

Taco Zoetemelk 23-12-2019 15:51
Categorieën: BLOG, Cloud, DBMS, MS SQL Server, Technisch

Geïnspireerd door mijn collega Craig en zijn blogs over het draaien van PostgreSQL in Docker, was ik benieuwd of dit ook zou kunnen met een SQL Server database. Het korte antwoord? Dat is gelukt. Het lange antwoord? Daarvoor moet je even verder lezen.

SQL Server op Linux

Sinds de release candidate (RC) van SQL Server 2017 uitkwam, bleek dat Microsoft met zijn databaseplatform niet alleen het Windows-besturingssysteem ondersteunde, maar ook Linux en Docker-containers. Microsoft is hiermee een nieuwe weg ingeslagen, wat voor mij heel interessant blijkt te zijn. De mogelijkheid om SQL Server op Linux of in een Docker-container te draaien, brengt allerlei interessante mogelijkheden met zich mee. In deze blog zoom ik in op het draaien van SQL Server in een Docker-container.

Docker

Microsoft heeft het zeer makkelijk gemaakt om zelf te beginnen met het draaien van SQL Server in Docker. Er zijn een aantal officiële images beschikbaar gesteld op de Docker Hub (Microsoft op Docker Hub). Het enige wat je hoeft te doen is een container starten en verwijzen naar een image van Microsoft en je hebt een SQL Server draaiende.

Hoe draai je SQL Server in Docker?

Voor het daadwerkelijk draaien van SQL Server op een Docker-image, zijn de volgende zaken nodig:

Start

Om een nieuw Docker-image te starten met daarop Microsoft SQL Server, gebruik je het volgende commando:

docker run --name some-mssql -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=VeryStrongPassword@2019' -d mcr.microsoft.com/mssql/server:2017-latest-ubuntu

Wanneer Docker helemaal klaar is met het binnenhalen van de image, wordt deze gestart en wordt er een id teruggegeven van de image. Omdat ik als naam ‘some-mssql’ heb opgegeven, is de image zowel via dit id als via de naam te beheren en benaderen.

Het werkt! Of toch niet?

Ik dacht dat ik hiermee een draaiende SQL Server-instantie had in een container omdat docker geen foutmeldingen gaf, maar dat bleek niet het geval. Het commando docker ps geeft geen draaiende containers:

docker ps

Als ik met docker ps -a kijk, geeft dit commando aan dat mijn container de status "exited" heeft.

docker ps -a

Gelukkig is er wel de mogelijkheid om de logs van een container te bekijken:

docker logs some-mssql