SQL Server on Docker (1ère partie) : Installation

SQL Server on Docker : Introduction

Les technologies de containers ont le vent en poupe depuis déjà pas mal d’années.
De nombreuses solutions de conteneurisation telles que Docker mettent en avant leurs avantages sur les technologies classiques de virtualisation :

  • Rapidité et facilité d’installation.
  • L’utilisation réduite de ressources systèmes.
  • Une meilleure isolation (n’ayant pas de système d’exploitation partagé, les containers sont naturellement isolés les uns des autres).
  • Rapidité et facilité d’installation.
  • Une excellente portabilité.

La plus connue des solutions de conteneurisation est certainement Docker. Cette solution permet d’installer très facilement aussi bien des serveurs applicatifs ou web (Tomcat, Weblogic, Websphère) que des moteurs de base de données (MySQL, SQLServer, Oracle Database, Db2). Il s’avère d’une grande efficacité dans le cadre du déploiement d’applications à destination des testeurs et des développeurs.

Je vous propose, dans ce premier article, de mettre en place un moteur SQL Server fonctionnant sous Docker.

 

Installation de Docker

Commençons tout d’abord par installer Docker sur notre serveur.
Le système d’exploitation que j’ai choisi est un CentOS 7 (il est bien sûr possible d’installer Docker sur une distribution Windows).

Dans un premier temps, il faut configurer yum sur notre CentOS afin d’y ajouter le repository Docker (voir le lien vers le site officiel : https://docs.docker.com/v17.09/engine/installation/linux/docker-ce/centos/#install-using-the-repository/).

sudo yum install yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Une fois le repository configuré, lançons l’installation de Docker sur notre serveur CentOS :

sudo yum install docker-ce -y

Démarrons maintenant notre Docker afin qu’il se lance automatiquement au reboot de notre serveur :

sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker

Vérifions maintenant le fonctionnement de notre Docker en exécutant l’image « hello-world »

sudo docker run hello-world

Le message « Hello from Docker! » s’affiche correctement : notre docker est donc opérationnel.

Passons maintenant à la suite des opérations : la création d’un container SQL Server.

 

Installation et création d’un container SQL Server

En premier lieu, il nous faut récupérer, depuis le repository Docker, l’image de la distribution SQL Server en lançant la commande ci-dessous :

sudo docker pull microsoft/mssql-server-linux:latest

L’image est maintenant installée. Il est possible de visualiser l’ensemble des images installées à l’aide de la commande ci-dessous :

sudo docker images

Démarrons ensuite un container SQL server basé sur l’image que nous venons d’installer :

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=PAssw0rd' -p 1433:1433 --name sql-docker1 -h sqllinux01 -d microsoft/mssql-server-linux 

Nous avons ici démarré notre container avec les options ci-dessous :

  • -e ‘ACCEPT_EULA=Y’ -e ‘SA_PASSWORD=PAssw0rd’ : L’option -e précise les variables d’environnement spécifiques à SQL Server. Cei permet ici d’accepter la licence Microsoft et de définir un mot de passe pour le compte sa.
  • -p 1433:1433  : L’option -p permet de préciser les ports TCP du container mappés avec les ports TCP du serveur hôte.
    Le format de cette option est le suivant :

    • –name sql-docker1 : L’option –name permet de définir le nom du container.
  • -h sqllinux01 : L’option -h permet de définir le nom du serveur qui sera assigné au container. C’est ce nom de serveur qui apparaîtra comme hébergeant le moteur SQL dans le container.
  • -d : Cette option force le container à démarrer en background.
  • microsoft/mssql-server-linux : Ce dernier paramètre est le nom de l’image utilisée pour créer le container.

Notre container SQL Server est maintenant disponible.
Pour vérifier que le container est bien démarré, il suffit de lancer la commande ci-dessous :

sudo docker ps -a

Vérifions maintenant que nous pouvons nous connecter à cette instance avec SQL Server Management Studio.
La connexion à l’instance s’effectue exactement comme pour une instance normale :

Une fois connecté, lançons quelques commandes afin de vérifier la version du moteur SQL et les caractéristiques du serveur (ici, le serveur sera vu comme étant un Ubuntu) :

Nous sommes donc bien connectés à une instance SQL Server 2017 hébergée sur un serveur linux.

Dans un second article, nous verrons plus en détail la configuration de Docker et le paramétrage qu’il est possible de mettre en place sur notre container SQL Server.