Installer SQL Server sur Docker

Récupérer l’image SQL Server 2022 et lancer le conteneur avec Podman sans root, choisir l’édition par MSSQL_PID, obtenir un certificat avec Certbot.

Pour ces opérations, je vais utiliser Podman à la place de Docker sur ma machine Debian, afin de profiter d’une installation serviceless et qui n’a pas besoin de fonctionner en mode root.

Récupération de l’image Docker de SQL Server

Vous pouvez trouver la liste des images téléchargeables ici.

Vous pouvez spécifier l’édition dans les variables d’environnement, avec la variable MSSQL_PID. Par exemple -e "MSSQL_PID=Developer" pour l’édition Developer. Le mot de passe de sa se passe dans MSSQL_SA_PASSWORD : l’ancienne variable SA_PASSWORD est dépréciée. Remplacez <mot_de_passe> par un mot de passe qui respecte la politique de SQL Server (huit caractères au moins, pris dans trois des quatre familles : majuscules, minuscules, chiffres, symboles), sans quoi le conteneur s’arrête au démarrage. La liste des variables est dans la documentation Microsoft.

podman pull mcr.microsoft.com/mssql/server:2022-latest

podman run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<mot_de_passe>" -e "MSSQL_PID=Developer" -p 1433:1433 --name sql_server_2022 -d mcr.microsoft.com/mssql/server:2022-latest

Vérifiez que le conteneur fonctionne correctement avec la commande :

podman ps

Obtenir un certificat SSL avec Certbot

Pour chiffrer les connexions avec un certificat reconnu, Certbot obtient un certificat Let’s Encrypt pour le nom DNS du serveur. En mode --standalone, il ouvre lui-même le port 80 de la machine, qui doit être joignable depuis Internet. Remplacez sql.example.com par le nom de votre serveur.

sudo certbot certonly --standalone --preferred-challenges http -d sql.example.com

Le certificat se déclare ensuite dans SQL Server avec mssql-conf (network.tlscert et network.tlskey) : la procédure est dans Chiffrer les connexions à SQL Server sur Linux.